Junio C Hamano <gitster@xxxxxxxxx> writes: > Jeff King <peff@xxxxxxxx> writes: > ... >> For a bare clone, it won't emit any warning at all (but will still >> set up HEAD appropriately). That's probably fine. There's no part of >> the operation we were unable to perform, so any "by the way, the >> remote HEAD wasn't there but we pointed our HEAD to it anyway" >> message would be purely informational. Though perhaps one could argue >> the same about the current "empty repository" message in a bare >> clone. > > I am kind of surprised that the code still behaves differently > between empty and non-empty cases. Given the earlier decision above > to consistently use the remote's HEAD, I would have expected that > setting HEAD to point at an non-existent ref would be done at one > place, instead of being done for empty and non-empty clone > separately. We'll find out why while reading the patch, I think. OK, that is because we have if/else on the number of refs mapped via the refspec by wanted_peer_refs(), and setup_unborn_head is done independently in each of these if/else arms. > --- a/builtin/clone.c > +++ b/builtin/clone.c > @@ -1298,9 +1298,12 @@ int cmd_clone(int argc, const char **argv, const char *prefix) > if (!our_head_points_at) > die(_("Remote branch %s not found in upstream %s"), > option_branch, remote_name); > - } > - else > + } else { > our_head_points_at = remote_head_points_at; > + if (!our_head_points_at) > + setup_unborn_head(transport_ls_refs_options.unborn_head_target, > + reflog_msg.buf); > + } > } > else { > if (option_branch) The following rewrite with the same behaviour may be a bit easier to follow. Thanks. builtin/clone.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git c/builtin/clone.c w/builtin/clone.c index cb7b347c5a..0b172af9e4 100644 --- c/builtin/clone.c +++ w/builtin/clone.c @@ -1298,11 +1298,12 @@ int cmd_clone(int argc, const char **argv, const char *prefix) if (!our_head_points_at) die(_("Remote branch %s not found in upstream %s"), option_branch, remote_name); - } else { + } else if (remote_head_points_at) { our_head_points_at = remote_head_points_at; - if (!our_head_points_at) - setup_unborn_head(transport_ls_refs_options.unborn_head_target, - reflog_msg.buf); + } else { + our_head_points_at = NULL; + setup_unborn_head(transport_ls_refs_options.unborn_head_target, + reflog_msg.buf); } } else {