Turn the flags in struct dir_struct into a single variable
[gitweb.git] / remote.h
index 6a4c7a0f37720a41d70ee4099d6e91c31ab69375..a46a5be131caf1d1d71f97cab3c3ba2cebb6386c 100644 (file)
--- a/remote.h
+++ b/remote.h
@@ -1,19 +1,29 @@
 #ifndef REMOTE_H
 #define REMOTE_H
 
+enum {
+       REMOTE_CONFIG,
+       REMOTE_REMOTES,
+       REMOTE_BRANCHES
+};
+
 struct remote {
        const char *name;
+       int origin;
 
        const char **url;
        int url_nr;
+       int url_alloc;
 
        const char **push_refspec;
        struct refspec *push;
        int push_refspec_nr;
+       int push_refspec_alloc;
 
        const char **fetch_refspec;
        struct refspec *fetch;
        int fetch_refspec_nr;
+       int fetch_refspec_alloc;
 
        /*
         * -1 to never fetch tags
@@ -22,9 +32,16 @@ struct remote {
         * 2 to always fetch tags
         */
        int fetch_tags;
+       int skip_default_update;
+       int mirror;
 
        const char *receivepack;
        const char *uploadpack;
+
+       /*
+        * for curl remotes only
+        */
+       char *http_proxy;
 };
 
 struct remote *remote_get(const char *name);
@@ -37,12 +54,15 @@ int remote_has_url(struct remote *remote, const char *url);
 struct refspec {
        unsigned force : 1;
        unsigned pattern : 1;
+       unsigned matching : 1;
 
        char *src;
        char *dst;
 };
 
-struct ref *alloc_ref(unsigned namelen);
+extern const struct refspec *tag_refspec;
+
+struct ref *alloc_ref(const char *name);
 
 struct ref *copy_ref_list(const struct ref *ref);
 
@@ -53,12 +73,15 @@ int check_ref_type(const struct ref *ref, int flags);
  */
 void free_refs(struct ref *ref);
 
+int resolve_remote_symref(struct ref *ref, struct ref *list);
+
 /*
  * Removes and frees any duplicate refs in the map.
  */
 void ref_remove_duplicates(struct ref *ref_map);
 
-struct refspec *parse_ref_spec(int nr_refspec, const char **refspec);
+int valid_fetch_refspec(const char *refspec);
+struct refspec *parse_fetch_refspec(int nr_refspec, const char **refspec);
 
 int match_refs(struct ref *src, struct ref *dst, struct ref ***dst_tail,
               int nr_refspec, const char **refspec, int all);
@@ -95,6 +118,7 @@ struct branch {
        const char **merge_name;
        struct refspec **merge;
        int merge_nr;
+       int merge_alloc;
 };
 
 struct branch *branch_get(const char *name);
@@ -102,4 +126,15 @@ struct branch *branch_get(const char *name);
 int branch_has_merge_config(struct branch *branch);
 int branch_merge_matches(struct branch *, int n, const char *);
 
+/* Flags to match_refs. */
+enum match_refs_flags {
+       MATCH_REFS_NONE         = 0,
+       MATCH_REFS_ALL          = (1 << 0),
+       MATCH_REFS_MIRROR       = (1 << 1),
+};
+
+/* Reporting of tracking info */
+int stat_tracking_info(struct branch *branch, int *num_ours, int *num_theirs);
+int format_tracking_info(struct branch *branch, struct strbuf *sb);
+
 #endif