From: Dmitry Potapov Date: Wed, 26 Mar 2008 02:46:09 GMT Subject: Re: [PATCH 0/7] Case-insensitive filesystem support, take 1 Message-ID: <20080326024609.GL25381@dpotapov.dyndns.org> In-Reply-To: On Tue, Mar 25, 2008 at 02:04:58PM -0700, Linus Torvalds wrote: > > IOW, all my case-insensitivity checking was very much designed to be about > the working tree, not about git internal representations. Put another way, > they should really only affect code that does "lstat()" to check whether > a file exists or code that does "open()" to open/create a file. Of course, case-insensitivity is about the working tree only. But when I merge another branch to the current one, git normally checks that it is not going to overwrite existing files in the *work tree* and refuses to do the merge if some files may be overwritten. So if I work on a case-insensitive filesystem and have a file in a different case and core.ignorecase=false, then the merge fails as expected! But core.ignorecase=true, which is supposed to do a better job for case- insensitive filesystems, actually causes the problem here. Here is my test script: ==== mkdir git-test cd git-test git init git config core.ignorecase true echo foo > foo git add foo git commit -m 'initial commit' git checkout -b other echo file > file git add file git commit -m 'add file' git checkout master echo File > File git add File git commit -m 'add File' # I expect merge to fail here... and it does fail if core.ignorecase # is set to false, but with core.ignorecase = true, git will overwrite # 'File'. # git config core.ignorecase false git merge other === Dmitry