refspec.hon commit Merge branch 'master' of git://git.kernel.org/pub/scm/git/git (b50e1c0)
   1#ifndef REFSPEC_H
   2#define REFSPEC_H
   3
   4#define TAG_REFSPEC "refs/tags/*:refs/tags/*"
   5extern const struct refspec_item *tag_refspec;
   6
   7struct refspec_item {
   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
  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
  23struct 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
  35int refspec_item_init(struct refspec_item *item, const char *refspec,
  36                      int fetch);
  37void refspec_item_init_or_die(struct refspec_item *item, const char *refspec,
  38                              int fetch);
  39void refspec_item_clear(struct refspec_item *item);
  40void refspec_init(struct refspec *rs, int fetch);
  41void refspec_append(struct refspec *rs, const char *refspec);
  42void refspec_appendn(struct refspec *rs, const char **refspecs, int nr);
  43void refspec_clear(struct refspec *rs);
  44
  45int valid_fetch_refspec(const char *refspec);
  46
  47struct argv_array;
  48/*
  49 * Determine what <prefix> values to pass to the peer in ref-prefix lines
  50 * (see Documentation/technical/protocol-v2.txt).
  51 */
  52void refspec_ref_prefixes(const struct refspec *rs,
  53                          struct argv_array *ref_prefixes);
  54
  55#endif /* REFSPEC_H */