Re: [PATCH 6/9] clone: learn about the possibly-configured default branch name
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 10, 2020, 22:58 UTC
- Message-ID
- <xmqqsgf2eden.fsf@gitster.c.googlers.com>
- In-Reply-To
- <cce86c06bbf459ecbfddf21b1417bacc12315e3e.1591823971.git.gitgitgadget@gmail.com>
"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 18 quoted lines
> @@ -1263,9 +1263,17 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
> remote_head_points_at = NULL;
> remote_head = NULL;
> option_no_checkout = 1;
> - if (!option_bare)
> - install_branch_config(0, "master", option_origin,
> - "refs/heads/master");
> + if (!option_bare) {
> + char *default_branch = git_default_branch_name(0);
> + const char *nick;
> +
> + if (!skip_prefix(default_branch, "refs/heads/", &nick))
> + BUG("unexpected default branch '%s'",
> + default_branch);
> + install_branch_config(0, nick, option_origin,
> + default_branch);
> + free(default_branch);
> + }Good catch. Normal clone would follow whatever primary branch the other side uses by pointing at it with its "HEAD" but this codepath to deal with a clone of an empty repository needs to use a default, so this is an appropriate change.
Show 19 quoted lines
> write_refspec_config(src_ref_prefix, our_head_points_at, > diff --git a/t/t5609-clone-branch.sh b/t/t5609-clone-branch.sh > index 6e7a7be0522..66af3ac2669 100755 > --- a/t/t5609-clone-branch.sh > +++ b/t/t5609-clone-branch.sh > @@ -67,4 +67,13 @@ test_expect_success 'clone -b not allowed with empty repos' ' > test_must_fail git clone -b branch empty clone-branch-empty > ' > > +test_expect_success 'chooses correct default branch name' ' > + GIT_TEST_DEFAULT_BRANCH_NAME= \ > + git -c core.defaultBranchName=up clone empty whats-up && > + test_write_lines refs/heads/up refs/heads/up >expect && > + git -C whats-up symbolic-ref HEAD >actual && > + git -C whats-up config branch.up.merge >>actual && > + test_cmp expect actual > +' > + > test_done