diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-10-15 15:43:42 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-10-15 15:43:42 -0700 |
commit | a394b39726f92c408fa494fa5357667b21466e93 (patch) | |
tree | 0c615e18e0406143ad9c3ad54408f2a0ca60ddfc | |
parent | 50a5e697b47a8625ed5b4d8a7f475a5741555566 (diff) | |
parent | 0eb8548f45cc51bff9b70f551f4c472af353a814 (diff) | |
download | git-a394b39726f92c408fa494fa5357667b21466e93.tar.gz |
Merge branch 'mm/detach-at-HEAD-reflog'
After "git checkout --detach", "git status" reported a fairly
useless "HEAD detached at HEAD", instead of saying at which exact
commit.
* mm/detach-at-HEAD-reflog:
status: don't say 'HEAD detached at HEAD'
t3203: test 'detached at' after checkout --detach
-rwxr-xr-x | t/t3203-branch-output.sh | 13 | ||||
-rw-r--r-- | wt-status.c | 6 |
2 files changed, 19 insertions, 0 deletions
diff --git a/t/t3203-branch-output.sh b/t/t3203-branch-output.sh index f1ae5ff662..9454423ca0 100755 --- a/t/t3203-branch-output.sh +++ b/t/t3203-branch-output.sh @@ -106,6 +106,19 @@ EOF test_i18ncmp expect actual ' +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)) + branch-one + branch-two + master +EOF + git checkout --detach && + git branch >actual && + test_i18ncmp expect actual +' + test_expect_success 'git branch shows detached HEAD properly after moving' ' cat >expect <<EOF && * (HEAD detached from $(git rev-parse --short HEAD)) diff --git a/wt-status.c b/wt-status.c index c327fe8128..3e3b8c0989 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; } |