summaryrefslogtreecommitdiff
path: root/remote.h
diff options
context:
space:
mode:
Diffstat (limited to 'remote.h')
-rw-r--r--remote.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/remote.h b/remote.h
index f21b6a6..8994052 100644
--- a/remote.h
+++ b/remote.h
@@ -15,6 +15,14 @@ struct remote {
struct refspec *fetch;
int fetch_refspec_nr;
+ /*
+ * -1 to never fetch tags
+ * 0 to auto-follow tags on heuristic (default)
+ * 1 to always auto-follow tags
+ * 2 to always fetch tags
+ */
+ int fetch_tags;
+
const char *receivepack;
const char *uploadpack;
};
@@ -41,10 +49,26 @@ struct ref *alloc_ref(unsigned namelen);
*/
void free_refs(struct ref *ref);
+struct refspec *parse_ref_spec(int nr_refspec, const char **refspec);
+
int match_refs(struct ref *src, struct ref *dst, struct ref ***dst_tail,
int nr_refspec, char **refspec, int all);
/*
+ * Given a list of the remote refs and the specification of things to
+ * fetch, makes a (separate) list of the refs to fetch and the local
+ * refs to store into.
+ *
+ * *tail is the pointer to the tail pointer of the list of results
+ * beforehand, and will be set to the tail pointer of the list of
+ * results afterward.
+ */
+int get_fetch_map(struct ref *remote_refs, const struct refspec *refspec,
+ struct ref ***tail);
+
+struct ref *get_remote_ref(struct ref *remote_refs, const char *name);
+
+/*
* For the given remote, reads the refspec's src and sets the other fields.
*/
int remote_find_tracking(struct remote *remote, struct refspec *refspec);