* [PATCH 1/2] t3203: test 'detached at' after checkout --detach @ 2015-09-27 15:13 Matthieu Moy 2015-09-27 15:13 ` [PATCH 2/2] status: don't say 'HEAD detached at HEAD' Matthieu Moy 0 siblings, 1 reply; 4+ messages in thread From: Matthieu Moy @ 2015-09-27 15:13 UTC (permalink / raw) To: gitster; +Cc: git, Matthieu Moy This currently fails: the output is 'HEAD detached at HEAD'. --- t/t3203-branch-output.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/t/t3203-branch-output.sh b/t/t3203-branch-output.sh index f51d0f3..bf24dbf 100755 --- a/t/t3203-branch-output.sh +++ b/t/t3203-branch-output.sh @@ -106,6 +106,19 @@ EOF test_i18ncmp expect actual ' +test_expect_failure '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)) -- 2.5.0.402.g8854c44 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] status: don't say 'HEAD detached at HEAD' 2015-09-27 15:13 [PATCH 1/2] t3203: test 'detached at' after checkout --detach Matthieu Moy @ 2015-09-27 15:13 ` Matthieu Moy 2015-10-01 11:13 ` Michael J Gruber 0 siblings, 1 reply; 4+ messages in thread From: Matthieu Moy @ 2015-09-27 15:13 UTC (permalink / raw) To: gitster; +Cc: git, Matthieu Moy 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 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] status: don't say 'HEAD detached at HEAD' 2015-09-27 15:13 ` [PATCH 2/2] status: don't say 'HEAD detached at HEAD' Matthieu Moy @ 2015-10-01 11:13 ` Michael J Gruber 2015-10-01 16:53 ` Matthieu Moy 0 siblings, 1 reply; 4+ messages in thread From: Michael J Gruber @ 2015-10-01 11:13 UTC (permalink / raw) To: Matthieu Moy, gitster; +Cc: git Matthieu Moy venit, vidit, dixit 27.09.2015 17:13: > 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; > } > Reviewed and compile tested, thanks. Junio will also want your s-o-by, though ;) (Typically we don't introduce a failing test separately like 1/2 any more and do it in 1 patch, but I don't care either way.) Michael ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] status: don't say 'HEAD detached at HEAD' 2015-10-01 11:13 ` Michael J Gruber @ 2015-10-01 16:53 ` Matthieu Moy 0 siblings, 0 replies; 4+ messages in thread From: Matthieu Moy @ 2015-10-01 16:53 UTC (permalink / raw) To: Michael J Gruber; +Cc: gitster, git Michael J Gruber <git@drmicha.warpmail.net> writes: > Junio will also want your s-o-by, though ;) Argh, sorry. I normally have an alias to do this for me, but my git-send-email is temporarily broken and I forget to sign-off explicitly. I see that Junio already queued the patches in pu. In case it matters, both patches are Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> and I can resend if needed. -- Matthieu Moy http://www-verimag.imag.fr/~moy/ ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-10-01 16:53 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-09-27 15:13 [PATCH 1/2] t3203: test 'detached at' after checkout --detach Matthieu Moy 2015-09-27 15:13 ` [PATCH 2/2] status: don't say 'HEAD detached at HEAD' Matthieu Moy 2015-10-01 11:13 ` Michael J Gruber 2015-10-01 16:53 ` Matthieu Moy
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).