On Sat, Jan 20, 2018 at 2:01 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Junio C Hamano <gitster@xxxxxxxxx> writes: >> Eric Sunshine <sunshine@xxxxxxxxxxxxxx> writes: >>> Now that we know (due to Duy's excellent detective work[1]) that the >>> trigger is files with names differing only in case on case-insensitive >>> filesystems, the commit message can be updated appropriately. >> >> Thanks. Let me apply the following and do a 2.16.1, hopefully by >> the end of day or mid tomorrow at the latest. Test to protect the >> fix can come as a separate follow-up patch. > > I actually changed my mind and decided not to rush 2.16.1 with just > this change. After all, even though it is better not to crash in > such a problematic case, a "successful" clone of such a project on > such a filesystem cannot be sanely used *anyway*, so in that sense > the "fix" would stop "clone" from segfaulting but the resulting > repository would still be "wrong" (e.g. "git status" immediately > after clone would likely to say that the working tree is already > dirty and missing one of the two paths, or something silly like > that). The counter-argument is that filenames differing only in case do not necessarily render a project unusable on case-insensitive filesystems. For instance, if the problematic files exist only in a project's test suite or in some platform-specific resource directory, the project itself may still be perfectly usable for a person cloning a project merely to build and use it (not develop it). However, "clone" crashing _does_ render the project unusable for the same person. The crash[1] when cloning 'tcell' is an example of a project which is still 100% usable on case-insensitive filesystems despite case-conflicting filenames. Each of the conflicting file pairs [2] has identical content, so everything works as intended. Case-conflicting filenames also do not necessarily make it impossible to do development work on a project. I have, myself, on several occasions cloned such projects on MacOS to make improvements and track down and/or fix bugs in parts of the projects not impacted by the case-conflicting filenames. Footnotes: [1]: https://public-inbox.org/git/20180119180855.GA98561@smm.local/ [2]: case-conflicting files in tcell's bundled terminfo database: terminfo/database/32/2621A terminfo/database/32/2621a terminfo/database/68/hp2621A terminfo/database/68/hp2621a terminfo/database/68/hp70092A terminfo/database/68/hp70092a