[PATCH 2/2] status: don't say 'HEAD detached at HEAD'
- From
Matthieu Moy <matthieu.moy@imag.fr>
- Date
- Sep 27, 2015, 15:13 UTC
- Message-ID
- <1443366822-1753-2-git-send-email-Matthieu.Moy@imag.fr>
- In-Reply-To
- <1443366822-1753-1-git-send-email-Matthieu.Moy@imag.fr>
After using "git checkout --detach", the reflog is left with an entry like
checkout: moving from ... to HEAD
This message is parsed to generate the 'HEAD detached at' message in 'git branch' and 'git status', which leads to the not-so-useful message 'HEAD detached at HEAD'.
Instead, when parsing such reflog entry, resolve HEAD to the corresponding commit in the reflog, so that the message becomes 'HEAD detached at $sha1'. --- Another possible fix is to avoid creating such reflog entry. But anyway, this patch remains a good thing to do and it does fix the issue.
I won't have time to work on fixing the reflog soon, but it may be a nice microproject.
t/t3203-branch-output.sh | 2 +- wt-status.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/t/t3203-branch-output.sh b/t/t3203-branch-output.sh index bf24dbf..16efe7a 100755 --- a/t/t3203-branch-output.sh +++ b/t/t3203-branch-output.sh @@ -106,7 +106,7 @@ EOF test_i18ncmp expect actual ' -test_expect_failure 'git branch shows detached HEAD properly after checkout --detach' ' +test_expect_success 'git branch shows detached HEAD properly after checkout --detach' ' git checkout master && cat >expect <<EOF && * (HEAD detached at $(git rev-parse --short HEAD^0)) diff --git a/wt-status.c b/wt-status.c index c327fe8..3e3b8c0 100644 --- a/wt-status.c +++ b/wt-status.c @@ -1319,6 +1319,12 @@ static int grab_1st_switch(unsigned char *osha1, unsigned char *nsha1, hashcpy(cb->nsha1, nsha1); for (end = target; *end && *end != '\n'; end++) ; + if (!memcmp(target, "HEAD", end - target)) { + /* HEAD is relative. Resolve it to the right reflog entry. */ + strbuf_addstr(&cb->buf, + find_unique_abbrev(nsha1, DEFAULT_ABBREV)); + return 1; + } strbuf_add(&cb->buf, target, end - target); return 1; }
-- 2.5.0.402.g8854c44