{"thread":{"id":"22628","subject":"Git under Windows should warn or fail on entities differning only in case","startedAt":"2010-02-12T12:40:33Z","lastAt":"2010-02-13T06:05:23Z","messageCount":7,"participants":["David Hagood","Johannes Schindelin","Pete Harlan","Claus Färber","Julian Phillips","david.hagood@gmail.com","Daniel Barkalow"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"134330","messageId":"1265978433.7519.6.camel@chumley","threadId":"22628","inReplyTo":null,"subject":"Git under Windows should warn or fail on entities differning only in case","fromName":"David Hagood","fromEmail":"david.hagood@gmail.com","sentAt":"2010-02-12T12:40:33Z","receivedAt":"2010-02-12T12:40:33Z","isPatch":false,"sender":{"key":"david.hagood@gmail.com","avatar":null},"body":"I work in a mixed Windows and Linux development team where we have an\nembedded project that we are storing in GIT. However, we got bit by what\nis arguably a bug in Windows, but...\n\nIf you have 2 entities in a directory which have names differing only in\ncase, e.g. \"foo\" and \"FOO\", under a REAL operating system with case\nsensitive file system semantics, this is no problem. However, under\nWindows and their wonderful \"Case preserving but case insensitive\"\nsemantics, \"FOO\" and \"foo\" would be the same file, so when you\npull/checkout/clone a repo with this condition, Windows will overwrite\none file, then Git will always see a \"change\" because one file or the\nother won't be \"right\".\n\nI would suggest that git should check for this case, and generate a big\nwarning about it when it happens. (Yes, it sucks burdening Git with\nWindows' problems....)\n"},{"id":"134340","messageId":"alpine.DEB.1.00.1002121412300.20986@pacific.mpi-cbg.de","threadId":"22628","inReplyTo":"1265978433.7519.6.camel@chumley","subject":"Re: Git under Windows should warn or fail on entities differning only in case","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2010-02-12T13:14:55Z","receivedAt":"2010-02-12T13:14:55Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nDisclaimer: I am not uninterested in the subject you talk about, but my \nreply could come over as harsh, due to lack of time. If you are likely to \nbe annoyed by direct criticism, delete this mail and do not reply. Thank \nyou very much.\n\nOn Fri, 12 Feb 2010, David Hagood wrote:\n\n> I would suggest that git should check for this case, and generate a big \n> warning about it when it happens. (Yes, it sucks burdening Git with \n> Windows' problems....)\n\nGit is burdened with Windows' problems already. That does not suck. What \nsucks is that you only suggest that Git should check the case, in effect \nasking the few Git for Windows contributors to do it, instead of \njust going ahead and scratching your own itch.\n\nCiao,\nDscho\n"},{"id":"134362","messageId":"4B75908E.3060407@pcharlan.com","threadId":"22628","inReplyTo":"alpine.DEB.1.00.1002121412300.20986@pacific.mpi-cbg.de","subject":"Re: Git under Windows should warn or fail on entities differning only in case","fromName":"Pete Harlan","fromEmail":"pgit@pcharlan.com","sentAt":"2010-02-12T17:31:58Z","receivedAt":"2010-02-12T17:31:58Z","isPatch":false,"sender":{"key":"pgit@pcharlan.com","avatar":null},"body":"On 02/12/2010 05:14 AM, Johannes Schindelin wrote:\n> Hi,\n> \n> Disclaimer: I am not uninterested in the subject you talk about, but my \n> reply could come over as harsh, due to lack of time. If you are likely to \n> be annoyed by direct criticism, delete this mail and do not reply. Thank \n> you very much.\n> \n> On Fri, 12 Feb 2010, David Hagood wrote:\n> \n>> I would suggest that git should check for this case, and generate a big \n>> warning about it when it happens. (Yes, it sucks burdening Git with \n>> Windows' problems....)\n> \n> Git is burdened with Windows' problems already. That does not suck. What \n> sucks is that you only suggest that Git should check the case, in effect \n> asking the few Git for Windows contributors to do it, instead of \n> just going ahead and scratching your own itch.\n\nI didn't read David's patch as anything other than floating an idea.\n\nPosting a wish item to the list without a patch seems useful to me:\n\n1. Someone might be able to explain why the wished-for item is a bad\nidea, or why it's unfeasible to implement.\n\n2. Someone might have a flash of insight for how to implement the idea\nin a few lines of code and post the patch, improving Git.\n\n3. Someone might say, \"Good idea, go ahead and make the change,\" and the\nperson with the itch now knows that the idea will be accepted.\n\nIt sounds like this is a (3), which is doing pretty well for an idea\nabout how to change Git :)\n\n--Pete\n"},{"id":"134375","messageId":"BIjfD8Ogt6D@mid.cfaerber.name","threadId":"22628","inReplyTo":"1265978433.7519.6.camel@chumley","subject":"Re: Git under Windows should warn or fail on entities differning only in case","fromName":"Claus Färber","fromEmail":"gmane2010@cfaerber.name","sentAt":"2010-02-12T18:19:00Z","receivedAt":"2010-02-12T18:19:00Z","isPatch":false,"sender":{"key":"gmane2010@cfaerber.name","avatar":null},"body":"David Hagood <david.hagood@gmail.com> schrieb/wrote:\n> If you have 2 entities in a directory which have names differing only\n> in case, e.g. \"foo\" and \"FOO\", under a REAL operating system with case\n> sensitive file system semantics, this is no problem. However, under\n> Windows and their wonderful \"Case preserving but case insensitive\"\n> semantics, \"FOO\" and \"foo\" would be the same file,...\n\nMac OS X has the same problem.\n\nFurther, it does not preserve the Unicode normalisation form.\n\nClaus\n"},{"id":"134376","messageId":"8ed2af013638836aea441dc992bd403e@212.159.54.234","threadId":"22628","inReplyTo":"BIjfD8Ogt6D@mid.cfaerber.name","subject":"Re: Git under Windows should warn or fail on entities differning only in case","fromName":"Julian Phillips","fromEmail":"julian@quantumfyre.co.uk","sentAt":"2010-02-12T20:38:25Z","receivedAt":"2010-02-12T20:38:25Z","isPatch":false,"sender":{"key":"julian@quantumfyre.co.uk","avatar":"https://avatars.githubusercontent.com/u/948888?v=4"},"body":"On 12 Feb 2010 19:19:00 +0100, gmane2010@cfaerber.name (Claus Färber)\nwrote:\n> David Hagood <david.hagood@gmail.com> schrieb/wrote:\n>> If you have 2 entities in a directory which have names differing only\n>> in case, e.g. \"foo\" and \"FOO\", under a REAL operating system with case\n>> sensitive file system semantics, this is no problem. However, under\n>> Windows and their wonderful \"Case preserving but case insensitive\"\n>> semantics, \"FOO\" and \"foo\" would be the same file,...\n> \n> Mac OS X has the same problem.\n\nOnly by default.  You can choose to use a case sensitive filesystem if you\nwish.\n\n> Further, it does not preserve the Unicode normalisation form.\n\nUnfortunately you can't choose to turn this off. :(\n\n-- \nJulian\n"},{"id":"134379","messageId":"c246ad02f9dc741974dda45533bc83bd.squirrel@localhost","threadId":"22628","inReplyTo":"4B75908E.3060407@pcharlan.com","subject":"Re: Git under Windows should warn or fail on entities differning only in case","fromName":"","fromEmail":"david.hagood@gmail.com","sentAt":"2010-02-12T21:02:48Z","receivedAt":"2010-02-12T21:02:48Z","isPatch":false,"sender":{"key":"david.hagood@gmail.com","avatar":null},"body":"> On 02/12/2010 05:14 AM, Johannes Schindelin wrote:\n> I didn't read David's patch as anything other than floating an idea.\nIt also gets the issue out there and searchable.\n\n> It sounds like this is a (3), which is doing pretty well for an idea\n> about how to change Git :)\nIf only I weren't working on a 15 man-year project that has a 4 month\ndelivery time, trying to keep all my sub-ordinates unblocked.\n"},{"id":"134408","messageId":"alpine.LNX.2.00.1002130014180.14365@iabervon.org","threadId":"22628","inReplyTo":"1265978433.7519.6.camel@chumley","subject":"Re: Git under Windows should warn or fail on entities differning only in case","fromName":"Daniel Barkalow","fromEmail":"barkalow@iabervon.org","sentAt":"2010-02-13T06:05:23Z","receivedAt":"2010-02-13T06:05:23Z","isPatch":false,"sender":{"key":"barkalow@iabervon.org","avatar":"https://avatars.githubusercontent.com/u/55364219?v=4"},"body":"On Fri, 12 Feb 2010, David Hagood wrote:\n\n> I work in a mixed Windows and Linux development team where we have an\n> embedded project that we are storing in GIT. However, we got bit by what\n> is arguably a bug in Windows, but...\n> \n> If you have 2 entities in a directory which have names differing only in\n> case, e.g. \"foo\" and \"FOO\", under a REAL operating system with case\n> sensitive file system semantics, this is no problem. However, under\n> Windows and their wonderful \"Case preserving but case insensitive\"\n> semantics, \"FOO\" and \"foo\" would be the same file, so when you\n> pull/checkout/clone a repo with this condition, Windows will overwrite\n> one file, then Git will always see a \"change\" because one file or the\n> other won't be \"right\".\n> \n> I would suggest that git should check for this case, and generate a big\n> warning about it when it happens. (Yes, it sucks burdening Git with\n> Windows' problems....)\n\nThere are several possible paths here (at least one of which is something \nthat's been discussed and agreed to in principle, but nobody is interested \nin implementing):\n\n - Git for Windows could detect that your project isn't going to fit in \n   the Windows filesystem, because it knows the rules for filename \n   comparison on that filesystem and there are overlaps.\n\n - Git in general could detect that the filesystem thinks multiple names \n   your project uses are for the same file, because when it started \"FOO\" \n   didn't exist, now it does, and it's got the same stat info as some file \n   that git wrote in this interval.\n\n - Git in general could see that your project has declared that it's \n   partially developed on a system that conflates filenames in certain \n   patterns and/or treats certain filenames as being octet-wise different \n   filenames, and warn you, regardless of where you're running git, if you \n   create files that will be a problem, either for you or for other \n   people.\n\nI think you'd only really benefit from the third of these; with either of \nthe first two, the Windows users will find out in a clear way that they've \ngot problems, which is nice, but the Linux users won't get the instant \nfeedback necessary to keep them from causing the problems, and the Windows \nusers can't do much about the problems at that point, either.\n\nGit does support putting whitespace policy rules in .gitattributes and \nwarning about violations of them in some operations. It would not be \nunreasonable for git to support filename policy rules similarly, which \ncould be handy not only for Windows users, but for people who people who \nwant to refer to filenames over the telephone (\"No, xt underscore \n*lowercase* connmark dot c\") or can only type some characters (imagine how \nmuch fun it would be for a project to have subdirectories for different \neconomic zones, each named with the currency symbol for that zone; the \ncomputer has no problem with them, but each developer has a keyboard that \nonly has a key for a different one or two of them).\n\n\t-Daniel\n*This .sig left intentionally blank*\n"}]}