Subject: Re: Corruption of branch?

From: Thomas Nyberg <[email-masked]>
Date: Mon, 14 Dec 2015 13:08:50 -0500

Hi Stefan thanks for much for the response! So I compiled release 
version 2.6.4 as well as the current master branch on the git git 
repository (2.7.0.rc0.20.g4b9ab0e) and the problem persists on both.

To answer your questions, there are no weird characters. The name of the 
bad_branch is "frus". There is another branch called 
"frus_body_cleaning" that is totally fine.

As to whether the error continues after commits, the answer is no which 
is good. I.e. if I run `git checkout -b frus origin/frus` that works 
fine. I then decided to checkout a new branch (so as to not mess with 
the original branch and possibly turning this into a Heisenbug) and add 
a test commit which I pushed upstream. I then recloned the repository 
and was able to checkout this new branch just fine, but I still couldn't 
check out the original frus branch using the simplified command.

So of course on the practical side, I have a fix which is to just use 
`git checkout -b frus origin/frus` (apparently only this one time) and 
then be on my merry way (in fact I had only just broken myself of the 
habit typing it this older way after many versions of the newer simpler 
syntax), but it seems like it could be good to sort out what's going on 
here...

Thanks again for the response!

Cheers,
Thomas

On 12/14/2015 12:51 PM, Stefan Beller wrote:
> On Mon, Dec 14, 2015 at 9:40 AM, Thomas Nyberg <[email-masked]> wrote:
>> Hello,
>>
>> I have a repository (which I unfortunately cannot provide access to) which
>> is having some odd things happening with one (and only one) of its branches.
>> This workflow repeats the issue (here `bad_branch` is one of the remotes
>> branches; i.e. `origin/bad_branch`):
>>
>> (1) clone the repository
>> (2) git checkout `bad_branch`
>>
>> Basically nothing happens. Nothing is printed and I stay on the master
>> branch. I also checked $? and there is no error code that is set. If I
>> choose any of other branches, it correctly creates a local branch, sets it
>> to track the remote and then switches to the local branch.
>
> Does that branch have a funny name? (i.e. is it ASCII only? Or is it
> also utf8 characters?
> Does it have some special characters in it like points, colons,
> question marks etc)
>
> Does it happen only with a single sha1 or can you apply commits on top
> of that branch
> and the error condition persists?
>
>>
>> It seems like there could be some sort of weird bug in the checkout or
>> possibly somehow some corruption in the actual object tree. From my vantage
>> point, however, the data appears totally fine. For example, in
>> `.git/packed-refs` everything appears normal and if I explicitly checkout
>> the commit IDs directly (i.e. just copy the commit corresponding to
>> refs/remotes/origin/bad_branch and checkout $commit) it checks out fine. If
>> I do this with the bad_branch I get a detached HEAD as expected and git log
>> lists the commits that it should.
>>
>> This seems a bit odd to me. There's certainly some sort of error somewhere,
>> but it's passing silently. I'm not really sure how to debug this and it's
>> too bad I can't actually link the actual repository. I presume if I have the
>> time I could try compiling git from source and seeing if it still shows up.
>> I tested it on the following two versions of git get the same error:
>>
>> * 1.9.1 (installed as a package from Linux Mint 17.2 Rafaela)
>> * 2.1.4 (installed as a package from Debian Jessie 8.2)
>
> The refs handling code is in flux at the moment. (starting mid of last
> year actually)
> I cc'd people who did work recently on the file refs.c
>
> So I think trying with a new version of Git would be a valuable datapoint!
>
>>
>> Also I should note that the original repository is hosted on Github.
>>
>> Thanks for any help. Hopefully the fact that I can't provide enough
>> information for others to reproduce the issue isn't too large a bother...
>>
>> Cheers,
>> Thomas Nyberg
>> --
>> To unsubscribe from this list: send the line "unsubscribe git" in
>> the body of a message to [email-masked]
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html