@@ -894,7 +894,7 @@ test_expect_success 'status shows detached HEAD properly after cloning a reposit
git clone -b test_tag upstream downstream &&
git -C downstream status >actual &&
- grep -E "Not currently on any branch." actual
+ grep -E "HEAD detached at [0-9a-f]+" actual
'
test_expect_success 'setup status submodule summary' '
@@ -1632,6 +1632,13 @@ static int grab_1st_switch(struct object_id *ooid UNUSED,
struct grab_1st_switch_cbdata *cb = cb_data;
const char *target = NULL, *end;
+ if (skip_prefix(message, "clone: from ", &message)) {
+ oidcpy(&cb->noid, noid);
+ strbuf_reset(&cb->buf);
+ strbuf_add_unique_abbrev(&cb->buf, noid, DEFAULT_ABBREV);
+ return 1;
+ }
+
if (!skip_prefix(message, "checkout: moving from ", &message))
return 0;
target = strstr(message, " to ");
When a remote ref or a tag is checked out, HEAD is automatically detached, and "git status" says 'HEAD detached at ...', instead of 'Not currently on any branch.'; this is done by traversing the reflog and parsing an entry like 'checkout: moving from ... to ...'. In certain situations, HEAD can be detached after "git clone": for example, when "--branch" specifies a non-branch (e.g. a tag). It is preferable to avoid displaying 'Not currently on any branch.', so 'HEAD detached at $sha1' is shown instead. Signed-off-by: Roy Eldar <royeldar0@gmail.com> --- t/t7508-status.sh | 2 +- wt-status.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-)