> Paths that only differ in case work fine in a case-sensitive > filesystems, but if those repos are cloned in a case-insensitive one, > you'll get problems. The first thing to notice is "git status" will > never be clean with no indication what exactly is "dirty". > > This patch helps the situation a bit by pointing out the problem at > clone time. Even though this patch talks about case sensitivity, the > patch makes no assumption about folding rules by the filesystem. It > simply observes that if an entry has been already checked out at clone > time when we're about to write a new path, some folding rules are > behind this. > > This patch is tested with vim-colorschemes repository on a JFS partition > with case insensitive support on Linux. This repository has two files > darkBlue.vim and darkblue.vim. > > Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> This patch makes 'clone http repository' in 't5551-http-fetch-smart.sh' fail with: --- exp 2018-08-11 02:29:45.216641851 +0000 +++ actual.smudged 2018-08-11 02:29:45.264642318 +0000 @@ -15,3 +15,5 @@ < Pragma: no-cache < Cache-Control: no-cache, max-age=0, must-revalidate < Content-Type: application/x-git-upload-pack-result +> warning: the following paths have collided and only one from the same +> colliding group is in the working tree: This highlights a few issues: - This test runs GIT_TRACE_CURL=true git clone --quiet <URL> 2>err i.e. the curl trace and any errors or warnings from 'git clone' end up in the same file. This test then removes a lot of uninteresting headers before the comparison with 'test_cmp', but the warning remains and then triggers the test failure. Several other tests run a command like this, but those don't use 'test_cmp', but only grep the output to verify the presence or absence of certain headers. I'm inclined to think that it would be prudent to change all these tests to send the curl trace to a dedicated file (and then '--quiet' can be removed as well). Though, arguably, had that been already the case, this test wouldn't have failed, and we probably wouldn't have noticed that something is wrong. - But what triggered this warning in the first place? 'git clone' didn't print anything after the that warning, even when I re-run the test with that '--quiet' option removed. Furthermore, the cloned repository contains a single file, so there could be no case/folding collision among multiple files. I also notice that this patch doesn't add any tests... :) - I didn't understand this warning, I had to read the corresponding commit message to figure out what it's all about.