]> git.ipfire.org Git - thirdparty/git.git/blobdiff - remote.c
Fifth batch
[thirdparty/git.git] / remote.c
index 534c6426f1e653e6fbb81bd7256a6b3f9d2dfb19..c5ed74f91c63b090ddd916c4fa235a0ebf62f558 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -11,7 +11,7 @@
 #include "tag.h"
 #include "string-list.h"
 #include "mergesort.h"
-#include "argv-array.h"
+#include "strvec.h"
 #include "commit-reach.h"
 #include "advice.h"
 
@@ -276,7 +276,7 @@ static void read_branches_file(struct remote *remote)
 
        /*
         * The branches file would have URL and optionally
-        * #branch specified.  The "master" (or specified) branch is
+        * #branch specified.  The default (or specified) branch is
         * fetched and stored in the local branch matching the
         * remote name.
         */
@@ -284,7 +284,7 @@ static void read_branches_file(struct remote *remote)
        if (frag)
                *(frag++) = '\0';
        else
-               frag = "master";
+               frag = (char *)git_default_branch_name();
 
        add_url_alias(remote, strbuf_detach(&buf, NULL));
        strbuf_addf(&buf, "refs/heads/%s:refs/heads/%s",
@@ -1885,7 +1885,7 @@ static int stat_branch_pair(const char *branch_name, const char *base,
        struct object_id oid;
        struct commit *ours, *theirs;
        struct rev_info revs;
-       struct argv_array argv = ARGV_ARRAY_INIT;
+       struct strvec argv = STRVEC_INIT;
 
        /* Cannot stat if what we used to build on no longer exists */
        if (read_ref(base, &oid))
@@ -1911,15 +1911,15 @@ static int stat_branch_pair(const char *branch_name, const char *base,
                BUG("stat_branch_pair: invalid abf '%d'", abf);
 
        /* Run "rev-list --left-right ours...theirs" internally... */
-       argv_array_push(&argv, ""); /* ignored */
-       argv_array_push(&argv, "--left-right");
-       argv_array_pushf(&argv, "%s...%s",
-                        oid_to_hex(&ours->object.oid),
-                        oid_to_hex(&theirs->object.oid));
-       argv_array_push(&argv, "--");
+       strvec_push(&argv, ""); /* ignored */
+       strvec_push(&argv, "--left-right");
+       strvec_pushf(&argv, "%s...%s",
+                    oid_to_hex(&ours->object.oid),
+                    oid_to_hex(&theirs->object.oid));
+       strvec_push(&argv, "--");
 
        repo_init_revisions(the_repository, &revs, NULL);
-       setup_revisions(argv.argc, argv.argv, &revs, NULL);
+       setup_revisions(argv.nr, argv.v, &revs, NULL);
        if (prepare_revision_walk(&revs))
                die(_("revision walk setup failed"));
 
@@ -1938,7 +1938,7 @@ static int stat_branch_pair(const char *branch_name, const char *base,
        clear_commit_marks(ours, ALL_REV_FLAGS);
        clear_commit_marks(theirs, ALL_REV_FLAGS);
 
-       argv_array_clear(&argv);
+       strvec_clear(&argv);
        return 1;
 }
 
@@ -2097,8 +2097,16 @@ struct ref *guess_remote_head(const struct ref *head,
        if (head->symref)
                return copy_ref(find_ref_by_name(refs, head->symref));
 
-       /* If refs/heads/master could be right, it is. */
+       /* If a remote branch exists with the default branch name, let's use it. */
        if (!all) {
+               char *ref = xstrfmt("refs/heads/%s", git_default_branch_name());
+
+               r = find_ref_by_name(refs, ref);
+               free(ref);
+               if (r && oideq(&r->old_oid, &head->old_oid))
+                       return copy_ref(r);
+
+               /* Fall back to the hard-coded historical default */
                r = find_ref_by_name(refs, "refs/heads/master");
                if (r && oideq(&r->old_oid, &head->old_oid))
                        return copy_ref(r);