diff options
| author | Junio C Hamano <gitster@pobox.com> | 2021-10-03 21:49:17 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2021-10-03 21:49:17 -0700 |
| commit | ac162a606b673e44cec602dfe259aae8e5e08554 (patch) | |
| tree | eab7097e463ed367b554a47fe8f173547c33ac8d /builtin/clone.c | |
| parent | 4a6fd7d3c7d135f7be43c3ecc534c4487b21c1ec (diff) | |
| parent | 6b58df54cf0f461abb35bb2fac407d2547dbc2f0 (diff) | |
| download | git-ac162a606b673e44cec602dfe259aae8e5e08554.tar.xz | |
Merge branch 'jk/clone-unborn-head-in-bare'
"git clone" from a repository whose HEAD is unborn into a bare
repository didn't follow the branch name the other side used, which
is corrected.
* jk/clone-unborn-head-in-bare:
clone: handle unborn branch in bare repos
Diffstat (limited to 'builtin/clone.c')
| -rw-r--r-- | builtin/clone.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/builtin/clone.c b/builtin/clone.c index ff1d3d447a..c9d4ca2664 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -1229,6 +1229,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix) our_head_points_at = remote_head_points_at; } else { + const char *branch; + char *ref; + if (option_branch) die(_("Remote branch %s not found in upstream %s"), option_branch, remote_name); @@ -1239,24 +1242,22 @@ 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) { - const char *branch; - char *ref; - if (transport_ls_refs_options.unborn_head_target && - skip_prefix(transport_ls_refs_options.unborn_head_target, - "refs/heads/", &branch)) { - ref = transport_ls_refs_options.unborn_head_target; - transport_ls_refs_options.unborn_head_target = NULL; - create_symref("HEAD", ref, reflog_msg.buf); - } else { - branch = git_default_branch_name(0); - ref = xstrfmt("refs/heads/%s", branch); - } + if (transport_ls_refs_options.unborn_head_target && + skip_prefix(transport_ls_refs_options.unborn_head_target, + "refs/heads/", &branch)) { + ref = transport_ls_refs_options.unborn_head_target; + transport_ls_refs_options.unborn_head_target = NULL; + create_symref("HEAD", ref, reflog_msg.buf); + } else { + branch = git_default_branch_name(0); + ref = xstrfmt("refs/heads/%s", branch); + } + if (!option_bare) install_branch_config(0, branch, remote_name, ref); - free(ref); - } + + free(ref); } write_refspec_config(src_ref_prefix, our_head_points_at, |
