mirror of
https://github.com/git/git
synced 2024-08-25 02:35:46 +00:00
clone: use configured default branch name when appropriate
When cloning a repository without any branches, Git chooses a default branch name for the as-yet unborn branch. As part of the implicit initialization of the local repository, Git just learned to respect `init.defaultBranch` to choose a different initial branch name. We now really want that branch name to be used as a fall-back. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
8747ebb7cd
commit
0cc1b475bb
|
@ -3,5 +3,5 @@ init.templateDir::
|
|||
(See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
|
||||
|
||||
init.defaultBranch::
|
||||
Allows overriding the default branch name when initializing
|
||||
a new repository.
|
||||
Allows overriding the default branch name e.g. when initializing
|
||||
a new repository or when cloning an empty repository.
|
||||
|
|
|
@ -1264,9 +1264,13 @@ 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) {
|
||||
const char *branch = git_default_branch_name();
|
||||
char *ref = xstrfmt("refs/heads/%s", branch);
|
||||
|
||||
install_branch_config(0, branch, option_origin, ref);
|
||||
free(ref);
|
||||
}
|
||||
}
|
||||
|
||||
write_refspec_config(src_ref_prefix, our_head_points_at,
|
||||
|
|
|
@ -35,4 +35,19 @@ test_expect_success 'redirected clone -v does show progress' '
|
|||
|
||||
'
|
||||
|
||||
test_expect_success 'chooses correct default initial branch name' '
|
||||
git init --bare empty &&
|
||||
git -c init.defaultBranch=up clone empty whats-up &&
|
||||
test refs/heads/up = $(git -C whats-up symbolic-ref HEAD) &&
|
||||
test refs/heads/up = $(git -C whats-up config branch.up.merge)
|
||||
'
|
||||
|
||||
test_expect_success 'guesses initial branch name correctly' '
|
||||
git init --initial-branch=guess initial-branch &&
|
||||
test_commit -C initial-branch no-spoilers &&
|
||||
git -C initial-branch branch abc guess &&
|
||||
git clone initial-branch is-it &&
|
||||
test refs/heads/guess = $(git -C is-it symbolic-ref HEAD)
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Loading…
Reference in a new issue