File: refspec.h

package info (click to toggle)
libgit2 1.9.1%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 60,804 kB
  • sloc: ansic: 203,436; javascript: 2,458; sh: 1,763; python: 384; perl: 99; php: 65; makefile: 33
file content (131 lines) | stat: -rw-r--r-- 3,680 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
 * Copyright (C) the libgit2 contributors. All rights reserved.
 *
 * This file is part of libgit2, distributed under the GNU GPL v2 with
 * a Linking Exception. For full terms see the included COPYING file.
 */
#ifndef INCLUDE_git_refspec_h__
#define INCLUDE_git_refspec_h__

#include "common.h"
#include "types.h"
#include "net.h"
#include "buffer.h"

/**
 * @file git2/refspec.h
 * @brief Refspecs map local references to remote references
 * @defgroup git_refspec Refspecs map local references to remote references
 * @ingroup Git
 * @{
 */
GIT_BEGIN_DECL

/**
 * Parse a given refspec string
 *
 * @param refspec a pointer to hold the refspec handle
 * @param input the refspec string
 * @param is_fetch is this a refspec for a fetch
 * @return 0 if the refspec string could be parsed, -1 otherwise
 */
GIT_EXTERN(int) git_refspec_parse(git_refspec **refspec, const char *input, int is_fetch);

/**
 * Free a refspec object which has been created by git_refspec_parse
 *
 * @param refspec the refspec object
 */
GIT_EXTERN(void) git_refspec_free(git_refspec *refspec);

/**
 * Get the source specifier
 *
 * @param refspec the refspec
 * @return the refspec's source specifier
 */
GIT_EXTERN(const char *) git_refspec_src(const git_refspec *refspec);

/**
 * Get the destination specifier
 *
 * @param refspec the refspec
 * @return the refspec's destination specifier
 */
GIT_EXTERN(const char *) git_refspec_dst(const git_refspec *refspec);

/**
 * Get the refspec's string
 *
 * @param refspec the refspec
 * @return the refspec's original string
 */
GIT_EXTERN(const char *) git_refspec_string(const git_refspec *refspec);

/**
 * Get the force update setting
 *
 * @param refspec the refspec
 * @return 1 if force update has been set, 0 otherwise
 */
GIT_EXTERN(int) git_refspec_force(const git_refspec *refspec);

/**
 * Get the refspec's direction.
 *
 * @param spec refspec
 * @return GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH
 */
GIT_EXTERN(git_direction) git_refspec_direction(const git_refspec *spec);

/**
 * Check if a refspec's source descriptor matches a negative reference
 *
 * @param refspec the refspec
 * @param refname the name of the reference to check
 * @return 1 if the refspec matches, 0 otherwise
 */
GIT_EXTERN(int) git_refspec_src_matches_negative(const git_refspec *refspec, const char *refname);

/**
 * Check if a refspec's source descriptor matches a reference
 *
 * @param refspec the refspec
 * @param refname the name of the reference to check
 * @return 1 if the refspec matches, 0 otherwise
 */
GIT_EXTERN(int) git_refspec_src_matches(const git_refspec *refspec, const char *refname);

/**
 * Check if a refspec's destination descriptor matches a reference
 *
 * @param refspec the refspec
 * @param refname the name of the reference to check
 * @return 1 if the refspec matches, 0 otherwise
 */
GIT_EXTERN(int) git_refspec_dst_matches(const git_refspec *refspec, const char *refname);

/**
 * Transform a reference to its target following the refspec's rules
 *
 * @param out where to store the target name
 * @param spec the refspec
 * @param name the name of the reference to transform
 * @return 0, GIT_EBUFS or another error
 */
GIT_EXTERN(int) git_refspec_transform(git_buf *out, const git_refspec *spec, const char *name);

/**
 * Transform a target reference to its source reference following the refspec's rules
 *
 * @param out where to store the source reference name
 * @param spec the refspec
 * @param name the name of the reference to transform
 * @return 0, GIT_EBUFS or another error
 */
GIT_EXTERN(int) git_refspec_rtransform(git_buf *out, const git_refspec *spec, const char *name);

/** @} */
GIT_END_DECL

#endif