From: Johannes Schindelin <redacted>
When cloning a repository without any branches, Git chooses a default
branch name for the as-yet unborn branch.
Now that we can configure what the default branch name should be, we
will want `git clone` to respect that setting.
Signed-off-by: Johannes Schindelin <redacted>
---
builtin/clone.c | 14 +++++++++++---
t/t5609-clone-branch.sh | 9 +++++++++
2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/builtin/clone.c b/builtin/clone.c
index cb48a291caf..a21d3e99f82 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -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);
+ }
}
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
--
gitgitgadget