Re: Branch Name Case Sensitivity
- From
Torsten Bögershausen <tboegi@web.de>
- Date
- Feb 27, 2014, 20:32 UTC
- Message-ID
- <530FA0C1.3000109@web.de>
- In-Reply-To
- <xmqqvbw0xrl6.fsf@gitster.dls.corp.google.com>
On 2014-02-27 20.50, Junio C Hamano wrote:
Show 23 quoted lines
> Lee Hopkins <leerhop@gmail.com> writes:
>
>> Last week I ran across a potential bug with branch names on case
>> insensitive file systems, the complete scenario can be found here:
>>
>> https://groups.google.com/forum/#!topic/msysgit/ugKL-sVMiqI
>>
>> The tldr is because refs are stored as plain text files except when
>> packed into packed-refs, Git occasionally cannot tell the difference
>> between branches whose names only differ in case, and this could
>> potentially lead to the loss of history.
>>
>> It sounds like this is a known issue, and after some more digging I
>> did find some older threads related to this topic, but nothing recent.
>
> Yes, it is not limited to branch names but also applies to tags and
> filenames in your working tree.
>
> Perhaps git-{branch,tag}.txt and possibly gitrepository-layout.txt
> in Documentation/ may need a new "*Note*" section to warn against
> this.
>
> Thanks.There is a possible workaround: git pack-refs --all --prune
If this can be triggered by a hook, I don't know (I never used a hook)
It uses the C-function pack_refs(flags) in builtin/pack-refs.c Or we can possibly trigger this function at the the of "checkout -b" or "fetch" commands ? Only when core.ignorecase == true ?