]>
Commit | Line | Data |
---|---|---|
ec0cb496 BW |
1 | #ifndef REFSPEC_H |
2 | #define REFSPEC_H | |
3 | ||
4 | #define TAG_REFSPEC "refs/tags/*:refs/tags/*" | |
0ad4a5ff | 5 | extern const struct refspec_item *tag_refspec; |
ec0cb496 | 6 | |
0ad4a5ff | 7 | struct refspec_item { |
ec0cb496 BW |
8 | unsigned force : 1; |
9 | unsigned pattern : 1; | |
10 | unsigned matching : 1; | |
11 | unsigned exact_sha1 : 1; | |
12 | ||
13 | char *src; | |
14 | char *dst; | |
15 | }; | |
16 | ||
6d4c0578 BW |
17 | #define REFSPEC_FETCH 1 |
18 | #define REFSPEC_PUSH 0 | |
19 | ||
20 | #define REFSPEC_INIT_FETCH { .fetch = REFSPEC_FETCH } | |
21 | #define REFSPEC_INIT_PUSH { .fetch = REFSPEC_PUSH } | |
22 | ||
23 | struct refspec { | |
24 | struct refspec_item *items; | |
25 | int alloc; | |
26 | int nr; | |
27 | ||
28 | const char **raw; | |
29 | int raw_alloc; | |
30 | int raw_nr; | |
31 | ||
32 | int fetch; | |
33 | }; | |
34 | ||
35 | void refspec_item_init(struct refspec_item *item, const char *refspec, int fetch); | |
36 | void refspec_item_clear(struct refspec_item *item); | |
37 | void refspec_init(struct refspec *rs, int fetch); | |
38 | void refspec_append(struct refspec *rs, const char *refspec); | |
39 | void refspec_appendn(struct refspec *rs, const char **refspecs, int nr); | |
40 | void refspec_clear(struct refspec *rs); | |
41 | ||
c8fa9efe BW |
42 | int valid_fetch_refspec(const char *refspec); |
43 | ||
6373cb59 | 44 | struct argv_array; |
6c301adb JN |
45 | /* |
46 | * Determine what <prefix> values to pass to the peer in ref-prefix lines | |
47 | * (see Documentation/technical/protocol-v2.txt). | |
48 | */ | |
6373cb59 BW |
49 | void refspec_ref_prefixes(const struct refspec *rs, |
50 | struct argv_array *ref_prefixes); | |
51 | ||
ec0cb496 | 52 | #endif /* REFSPEC_H */ |