From: Torsten Bögershausen Date: Thu, 27 Feb 2014 20:32:01 GMT Subject: Re: Branch Name Case Sensitivity Message-ID: <530FA0C1.3000109@web.de> In-Reply-To: On 2014-02-27 20.50, Junio C Hamano wrote: > Lee Hopkins 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 ?