Stefan Beller <[email protected]> writes:
> On Fri, Sep 18, 2015 at 10:23 AM, Matthieu Moy
> <[email protected]> wrote:
>> Jacob Keller <[email protected]> writes:
>>
>>> On Fri, Sep 18, 2015 at 9:59 AM, Matthieu Moy
>>> <[email protected]> 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/
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html