All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
To: Stefan Beller <sbeller@google.com>
Cc: Michael J Gruber <git@drmicha.warpmail.net>,
	Jacob Keller <jacob.keller@gmail.com>, git <git@vger.kernel.org>
Subject: Re: [BUG?] HEAD detached at HEAD
Date: Fri, 18 Sep 2015 21:09:04 +0200	[thread overview]
Message-ID: <vpqlhc3h7e7.fsf@anie.imag.fr> (raw)
In-Reply-To: <CAGZ79kZxAwMvv6UoZLBd2wTOdj1DFWKQqSPBYL449KSokA8DQQ@mail.gmail.com> (Stefan Beller's message of "Fri, 18 Sep 2015 10:32:09 -0700")

Stefan Beller <sbeller@google.com> writes:

> On Fri, Sep 18, 2015 at 10:23 AM, Matthieu Moy
> <Matthieu.Moy@grenoble-inp.fr> wrote:
>> Jacob Keller <jacob.keller@gmail.com> writes:
>>
>>> On Fri, Sep 18, 2015 at 9:59 AM, Matthieu Moy
>>> <Matthieu.Moy@grenoble-inp.fr> wrote:
>>>> I'm getting it even if there's a tag and/or a branch pointing to the
>>>> same commit.
>>>>
>>>> Any idea what's going on?
>>>
>>> Any chance you accidentally made a branch or tag named HEAD?
>>
>> Nice try ;-), but no:
>
> I was playing around with origin/master and origin/pu and
> I cannot reproduce this bug.

I investigated a bit more. The root of the problem is "git checkout
--detach" and the reflog. Here's a reproduction script:


rm -fr test-repo
git init test-repo
cd test-repo
echo foo>bar; git add bar; git commit -m "foo"
echo boz>bar; git add bar; git commit -m "boz"
git checkout --detach
git status
git branch
rm -fr .git/logs/
git status
git branch

The end of the output is:

  + git checkout --detach
  + git status
  HEAD detached at HEAD
  nothing to commit, working directory clean
  + git branch
  * (HEAD detached at HEAD)
    master
  + rm -fr .git/logs/
  + git status
  Not currently on any branch.
  nothing to commit, working directory clean
  + git branch
  * (no branch)
    master

If one replaces "git checkout --detach" with "git checkout HEAD^0", then
the output is the one I expected:

  HEAD detached at cb39b20

The guilty line in the reflog is:

  checkout: moving from master to HEAD

One possible fix is to resolve HEAD when encountering it in the reflog,
like this:

--- a/wt-status.c
+++ b/wt-status.c
@@ -1319,6 +1319,13 @@ 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)) {
+               /* Don't say "HEAD detached at HEAD" */
+               unsigned char head[GIT_SHA1_RAWSZ];
+               get_sha1("HEAD", head);
+               strbuf_addstr(&cb->buf, find_unique_abbrev(head, DEFAULT_ABBREV));
+               return 1;
+       }
        strbuf_add(&cb->buf, target, end - target);
        return 1;
 }

What do you think?

Shall I turn this into a proper patch?

Thanks,

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

  reply	other threads:[~2015-09-18 19:09 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-18 16:59 [BUG?] HEAD detached at HEAD Matthieu Moy
2015-09-18 17:08 ` Jacob Keller
2015-09-18 17:23   ` Matthieu Moy
2015-09-18 17:32     ` Stefan Beller
2015-09-18 19:09       ` Matthieu Moy [this message]
2015-09-21  7:31         ` Michael J Gruber
2015-09-21  7:39           ` Michael J Gruber
2015-09-21  7:42             ` Matthieu Moy
2015-09-21 17:20         ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=vpqlhc3h7e7.fsf@anie.imag.fr \
    --to=matthieu.moy@grenoble-inp.fr \
    --cc=git@drmicha.warpmail.net \
    --cc=git@vger.kernel.org \
    --cc=jacob.keller@gmail.com \
    --cc=sbeller@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.