{"thread":{"id":"51268","subject":"[PATCH 0/1] Fix a test on NTFS (and probably HFS+)","startedAt":"2019-06-08T14:43:46Z","lastAt":"2019-06-25T19:42:33Z","messageCount":18,"participants":["Johannes Schindelin via GitGitGadget","Martin Ågren","brian m. carlson","Junio C Hamano","Johannes Schindelin","Ævar Arnfjörð Bjarmason"],"isPatch":true,"patchVersion":1,"patchTotal":1},"messages":[{"id":"376860","messageId":"pull.151.git.gitgitgadget@gmail.com","threadId":"51268","inReplyTo":null,"subject":"[PATCH 0/1] Fix a test on NTFS (and probably HFS+)","fromName":"Johannes Schindelin via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2019-06-08T14:43:43Z","receivedAt":"2019-06-08T14:43:46Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"My colleague Jameson Miller once presented me with a nice puzzle why the\ntest suite failed on their system.\n\nTurns out that it is possible in PowerShell to spell the directory with a\ndifferent case than on disk in cd <directory>, and subsequent calls to get\nthe current working directory will use that case, rather than what is\nrecorded on disk. And since case-insensitive filesystems are frowned upon in\nthe Linux world, Git's test suite was not prepared for such a scenario.\n\nJohannes Schindelin (1):\n  t0001: fix on case-insensitive filesystems\n\n t/t0001-init.sh | 12 ++++++++++++\n 1 file changed, 12 insertions(+)\n\n\nbase-commit: 8104ec994ea3849a968b4667d072fedd1e688642\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-151%2Fdscho%2Ffunny-cased-cwd-v1\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-151/dscho/funny-cased-cwd-v1\nPull-Request: https://github.com/gitgitgadget/git/pull/151\n-- \ngitgitgadget\n"},{"id":"376861","messageId":"1dd56d034efb6ff251bdac8d099052175f4777a0.1560005022.git.gitgitgadget@gmail.com","threadId":"51268","inReplyTo":"pull.151.git.gitgitgadget@gmail.com","subject":"[PATCH 1/1] t0001: fix on case-insensitive filesystems","fromName":"Johannes Schindelin via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2019-06-08T14:43:43Z","receivedAt":"2019-06-08T14:43:47Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"From: Johannes Schindelin <johannes.schindelin@gmx.de>\n\nOn a case-insensitive filesystem, such as HFS+ or NTFS, it is possible\nthat the idea Bash has of the current directory differs in case from\nwhat Git thinks it is. That's totally okay, though, and we should not\nexpect otherwise.\n\nReported by Jameson Miller.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n t/t0001-init.sh | 12 ++++++++++++\n 1 file changed, 12 insertions(+)\n\ndiff --git a/t/t0001-init.sh b/t/t0001-init.sh\nindex 42a263cada..f54a69e2d9 100755\n--- a/t/t0001-init.sh\n+++ b/t/t0001-init.sh\n@@ -307,10 +307,20 @@ test_expect_success 'init prefers command line to GIT_DIR' '\n \ttest_path_is_missing otherdir/refs\n '\n \n+downcase_on_case_insensitive_fs () {\n+\ttest false = \"$(git config --get core.filemode)\" || return 0\n+\tfor f\n+\tdo\n+\t\ttr A-Z a-z <\"$f\" >\"$f\".downcased &&\n+\t\tmv -f \"$f\".downcased \"$f\" || return 1\n+\tdone\n+}\n+\n test_expect_success 'init with separate gitdir' '\n \trm -rf newdir &&\n \tgit init --separate-git-dir realgitdir newdir &&\n \techo \"gitdir: $(pwd)/realgitdir\" >expected &&\n+\tdowncase_on_case_insensitive_fs expected newdir/.git &&\n \ttest_cmp expected newdir/.git &&\n \ttest_path_is_dir realgitdir/refs\n '\n@@ -365,6 +375,7 @@ test_expect_success 're-init to update git link' '\n \tgit init --separate-git-dir ../surrealgitdir\n \t) &&\n \techo \"gitdir: $(pwd)/surrealgitdir\" >expected &&\n+\tdowncase_on_case_insensitive_fs expected newdir/.git &&\n \ttest_cmp expected newdir/.git &&\n \ttest_path_is_dir surrealgitdir/refs &&\n \ttest_path_is_missing realgitdir/refs\n@@ -378,6 +389,7 @@ test_expect_success 're-init to move gitdir' '\n \tgit init --separate-git-dir ../realgitdir\n \t) &&\n \techo \"gitdir: $(pwd)/realgitdir\" >expected &&\n+\tdowncase_on_case_insensitive_fs expected newdir/.git &&\n \ttest_cmp expected newdir/.git &&\n \ttest_path_is_dir realgitdir/refs\n '\n-- \ngitgitgadget\n"},{"id":"376891","messageId":"CAN0heSrQ-AVui0OzpL7WGBzmdU4ignUsFxYqeXDtgR+CsDXbJw@mail.gmail.com","threadId":"51268","inReplyTo":"1dd56d034efb6ff251bdac8d099052175f4777a0.1560005022.git.gitgitgadget@gmail.com","subject":"Re: [PATCH 1/1] t0001: fix on case-insensitive filesystems","fromName":"Martin Ågren","fromEmail":"martin.agren@gmail.com","sentAt":"2019-06-09T19:23:08Z","receivedAt":"2019-06-09T19:28:56Z","isPatch":true,"sender":{"key":"martin.agren@gmail.com","avatar":null},"body":"Hi Dscho,\n\nOn Sat, 8 Jun 2019 at 16:45, Johannes Schindelin via GitGitGadget\n<gitgitgadget@gmail.com> wrote:\n>\n> From: Johannes Schindelin <johannes.schindelin@gmx.de>\n>\n> On a case-insensitive filesystem, such as HFS+ or NTFS, it is possible\n> that the idea Bash has of the current directory differs in case from\n> what Git thinks it is. That's totally okay, though, and we should not\n> expect otherwise.\n\n> +downcase_on_case_insensitive_fs () {\n> +       test false = \"$(git config --get core.filemode)\" || return 0\n\nI think it would be worthwhile to add `--type=bool` to this git-config\ncall. See, e.g., the FILEMODE prereq in t/test-lib.sh. From my\nunderstanding, this check would regress if someone did s/false/no/ in\nbuiltin/init-db.c, so this check is perhaps not as robust as it could\nbe. (Now, as for *why* someone would do such a change...)\n\nI do wonder if this is the right way to check for a case-insensitive\nfilesystem. According to git-config(1), this variable tells whether \"the\nexecutable bit of files in the working tree is to be honored\". I can see\nhow this property could correlate with the filesystem being\ncase-insensitive, but from git-config(1), I would have expected\ncore.ignoreCase to be queried instead.\n\nYou're no doubt a lot more familiar with filesystem case-insensitivity and\nhow it interacts with Git than I am. Any light you could shed on this\nwould be much appreciated.\n\n> +       for f\n> +       do\n> +               tr A-Z a-z <\"$f\" >\"$f\".downcased &&\n> +               mv -f \"$f\".downcased \"$f\" || return 1\n\nMakes sense. Good error-handling.\n\n> +       done\n> +}\n\nCheers\nMartin\n"},{"id":"376893","messageId":"20190609201302.GX8616@genre.crustytoothpaste.net","threadId":"51268","inReplyTo":"1dd56d034efb6ff251bdac8d099052175f4777a0.1560005022.git.gitgitgadget@gmail.com","subject":"Re: [PATCH 1/1] t0001: fix on case-insensitive filesystems","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-06-09T20:13:02Z","receivedAt":"2019-06-09T20:13:13Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"On 2019-06-08 at 14:43:43, Johannes Schindelin via GitGitGadget wrote:\n> diff --git a/t/t0001-init.sh b/t/t0001-init.sh\n> index 42a263cada..f54a69e2d9 100755\n> --- a/t/t0001-init.sh\n> +++ b/t/t0001-init.sh\n> @@ -307,10 +307,20 @@ test_expect_success 'init prefers command line to GIT_DIR' '\n>  \ttest_path_is_missing otherdir/refs\n>  '\n>  \n> +downcase_on_case_insensitive_fs () {\n> +\ttest false = \"$(git config --get core.filemode)\" || return 0\n> +\tfor f\n\nTIL that “for f” is equivalent to “for f in \"$@\"”. Thanks for teaching\nme something new.\n\n> +\tdo\n> +\t\ttr A-Z a-z <\"$f\" >\"$f\".downcased &&\n> +\t\tmv -f \"$f\".downcased \"$f\" || return 1\n> +\tdone\n> +}\n> +\n>  test_expect_success 'init with separate gitdir' '\n>  \trm -rf newdir &&\n>  \tgit init --separate-git-dir realgitdir newdir &&\n>  \techo \"gitdir: $(pwd)/realgitdir\" >expected &&\n> +\tdowncase_on_case_insensitive_fs expected newdir/.git &&\n\nI wonder if there's maybe a simpler way. If we canonicalize paths when\nwriting them to the gitdir file, then writing \"$(pwd -P)\" on the line\nabove should produce the right result.\n\nNow, technically, POSIX doesn't require case canonicalization of the\npath with \"pwd -P\", but then again, POSIX doesn't permit\ncase-insensitive file systems, and we know the behavior on macOS uses\nbash, which does the right thing in this case because it calls\nrealpath(3). I've tested that it also does the right thing on Linux when\nthe worktree containing the Git checkout is in a path with symlinks.\n\nI don't know how that works on Windows, but if it does, it might be\nsimpler.\n-- \nbrian m. carlson: Houston, Texas, US\nOpenPGP: https://keybase.io/bk2204\n"},{"id":"376945","messageId":"xmqqo935o0yi.fsf@gitster-ct.c.googlers.com","threadId":"51268","inReplyTo":"20190609201302.GX8616@genre.crustytoothpaste.net","subject":"Re: [PATCH 1/1] t0001: fix on case-insensitive filesystems","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2019-06-10T16:32:37Z","receivedAt":"2019-06-10T16:32:46Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"brian m. carlson\" <sandals@crustytoothpaste.net> writes:\n\n>>  test_expect_success 'init with separate gitdir' '\n>>  \trm -rf newdir &&\n>>  \tgit init --separate-git-dir realgitdir newdir &&\n>>  \techo \"gitdir: $(pwd)/realgitdir\" >expected &&\n>> +\tdowncase_on_case_insensitive_fs expected newdir/.git &&\n>\n> I wonder if there's maybe a simpler way. If we canonicalize paths when\n> writing them to the gitdir file, then writing \"$(pwd -P)\" on the line\n> above should produce the right result.\n>\n> Now, technically, POSIX doesn't require case canonicalization of the\n> path with \"pwd -P\", but then again, POSIX doesn't permit\n> case-insensitive file systems, and we know the behavior on macOS uses\n> bash, which does the right thing in this case because it calls\n> realpath(3). I've tested that it also does the right thing on Linux when\n> the worktree containing the Git checkout is in a path with symlinks.\n>\n> I don't know how that works on Windows, but if it does, it might be\n> simpler.\n\nYup, it would be a worthwhile avenue to pursue; on the negative\nside, a single-liner \"no, unfortunately that would not work on\nWindows\" would also be useful.\n\nThanks.\n"},{"id":"377556","messageId":"nycvar.QRO.7.76.6.1906192201200.44@tvgsbejvaqbjf.bet","threadId":"51268","inReplyTo":"xmqqo935o0yi.fsf@gitster-ct.c.googlers.com","subject":"Re: [PATCH 1/1] t0001: fix on case-insensitive filesystems","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2019-06-19T20:17:47Z","receivedAt":"2019-06-19T20:17:49Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Mon, 10 Jun 2019, Junio C Hamano wrote:\n\n> \"brian m. carlson\" <sandals@crustytoothpaste.net> writes:\n>\n> >>  test_expect_success 'init with separate gitdir' '\n> >>  \trm -rf newdir &&\n> >>  \tgit init --separate-git-dir realgitdir newdir &&\n> >>  \techo \"gitdir: $(pwd)/realgitdir\" >expected &&\n> >> +\tdowncase_on_case_insensitive_fs expected newdir/.git &&\n> >\n> > I wonder if there's maybe a simpler way. If we canonicalize paths when\n> > writing them to the gitdir file, then writing \"$(pwd -P)\" on the line\n> > above should produce the right result.\n\nWhen you execute `pwd -P` in Git for Windows' SDK's Bash (which is an\nMSYS2 Bash), you get the emulated Unix path. For example, in my main Git\nworktree, this results in\n\n\t$ pwd -P\n\t/usr/src/git\n\nHowever, the actual (i.e. Windows) path seen by `git.exe` is\n`C:/git-sdk-64/usr/src/git`.\n\n> > Now, technically, POSIX doesn't require case canonicalization of the\n> > path with \"pwd -P\", but then again, POSIX doesn't permit\n> > case-insensitive file systems,\n\nI was not sure about this statement (that POSIX does not permit\ncase-insensitive file systems), so I whipped up this gem in a quick web\nsearch (https://unix.stackexchange.com/a/358407):\n\n\tAccording to the POSIX specification:\n\n\t    The system may provide non-standard extensions. These are\n\t    features not required by POSIX.1-2008 and may include, but are\n\t    not limited to:\n\n\t--snip--\n\n\t\tNon-conforming file systems (for example, legacy file\n\t\tsystems for which _POSIX_NO_TRUNC is false,\n\t\tcase-insensitive file systems, or network file systems)\n\nWhich means that I now know once and for all that POSIX does not dictate\nwhether a file system should, or should not, be case-insensitive.\n\n> > and we know the behavior on macOS uses bash, which does the right\n> > thing in this case because it calls realpath(3). I've tested that it\n> > also does the right thing on Linux when the worktree containing the\n> > Git checkout is in a path with symlinks.\n\nI am honestly not a big fan of relying on testing things on the major\nthree platforms and then assuming that everything will work also on the\nlong tail of operating systems/setups.\n\nThat is exactly the kind of thinking that led me to believe that relying\non REG_STARTEND was a sane thing, and it simply wasn't. It caused quite a\nbit of pain, and my original approach would have prevented that, and after\ntesting on the major three platforms I let myself be talked into dropping\nthe original approach.\n\n> > I don't know how that works on Windows, but if it does, it might be\n> > simpler.\n>\n> Yup, it would be a worthwhile avenue to pursue; on the negative\n> side, a single-liner \"no, unfortunately that would not work on\n> Windows\" would also be useful.\n\n1) no, unfortunately that would not work on Windows. In a PowerShell, when\n   I call `c:` followed by `cd \\GIT-SDK-64`, it reports the current\n   directory as `C:\\GIT-SDK-64` (i.e. with the wrong case, the real name,\n   on disk, is `C:\\git-sdk-64`). When I then call Git's Bash to execute\n   `git -PW` (the `W` stands for: gimme a Windows path), it reports\n   `C:/GIT-SDK-64`. Incorrect case.\n\n2) It might look more elegant from the design perspective, but oh my\n   goodness do I not want to be a developer who has no knowledge of this\n   design decision, being tasked to debug any related issue.\n\n   It would be very \"magic\" that Git relies on its having written a\n   normalized path, not dealing well with Git worktrees initialized by\n   alternative Git implementations that did not normalize that path, or\n   previous Git versions that also did not, for example.\n\n   And normalizing the path for the sake of having this test case pass?\n   Nah. I like it explicit. And that's what my patch does. No magic.\n\nCiao,\nDscho\n"},{"id":"377557","messageId":"nycvar.QRO.7.76.6.1906192223560.44@tvgsbejvaqbjf.bet","threadId":"51268","inReplyTo":"CAN0heSrQ-AVui0OzpL7WGBzmdU4ignUsFxYqeXDtgR+CsDXbJw@mail.gmail.com","subject":"Re: [PATCH 1/1] t0001: fix on case-insensitive filesystems","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2019-06-19T20:24:31Z","receivedAt":"2019-06-19T20:24:25Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Martin,\n\nOn Sun, 9 Jun 2019, Martin Ågren wrote:\n\n> On Sat, 8 Jun 2019 at 16:45, Johannes Schindelin via GitGitGadget\n> <gitgitgadget@gmail.com> wrote:\n> >\n> > From: Johannes Schindelin <johannes.schindelin@gmx.de>\n> >\n> > On a case-insensitive filesystem, such as HFS+ or NTFS, it is possible\n> > that the idea Bash has of the current directory differs in case from\n> > what Git thinks it is. That's totally okay, though, and we should not\n> > expect otherwise.\n>\n> > +downcase_on_case_insensitive_fs () {\n> > +       test false = \"$(git config --get core.filemode)\" || return 0\n>\n> I think it would be worthwhile to add `--type=bool` to this git-config\n> call. See, e.g., the FILEMODE prereq in t/test-lib.sh. From my\n> understanding, this check would regress if someone did s/false/no/ in\n> builtin/init-db.c, so this check is perhaps not as robust as it could\n> be. (Now, as for *why* someone would do such a change...)\n>\n> I do wonder if this is the right way to check for a case-insensitive\n> filesystem. According to git-config(1), this variable tells whether \"the\n> executable bit of files in the working tree is to be honored\". I can see\n> how this property could correlate with the filesystem being\n> case-insensitive, but from git-config(1), I would have expected\n> core.ignoreCase to be queried instead.\n\nOh my, you're right. I do not know how the filemode slipped in...\n\nThanks!\nDscho\n\n> You're no doubt a lot more familiar with filesystem case-insensitivity and\n> how it interacts with Git than I am. Any light you could shed on this\n> would be much appreciated.\n>\n> > +       for f\n> > +       do\n> > +               tr A-Z a-z <\"$f\" >\"$f\".downcased &&\n> > +               mv -f \"$f\".downcased \"$f\" || return 1\n>\n> Makes sense. Good error-handling.\n>\n> > +       done\n> > +}\n>\n> Cheers\n> Martin\n>\n"},{"id":"377745","messageId":"nycvar.QRO.7.76.6.1906211632570.44@tvgsbejvaqbjf.bet","threadId":"51268","inReplyTo":"c2fdcf28e725c91a1a48c34226223866ad14bc0a.1560978437.git.gitgitgadget@gmail.com","subject":"Re: [PATCH v2 1/1] t0001: fix on case-insensitive filesystems","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2019-06-21T14:34:04Z","receivedAt":"2019-06-21T14:34:05Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"[Re-sending, as the Git mailing list seems to have decided to silently\ndrop this patch, I cannot see it on public-inbox.org, at least]\n\nFrom: Johannes Schindelin <johannes.schindelin@gmx.de>\n\nOn a case-insensitive filesystem, such as HFS+ or NTFS, it is possible\nthat the idea Bash has of the current directory differs in case from\nwhat Git thinks it is. That's totally okay, though, and we should not\nexpect otherwise.\n\nOn Windows, for example, when you call\n\n\tcd C:\\GIT-SDK-64\n\nin a PowerShell and there exists a directory called `C:\\git-sdk-64`, the\ncurrent directory will be reported in all upper-case. Even in a Bash\nthat you might call from that PowerShell. Git, however, will have\nnormalized this via `GetFinalPathByHandle()`, and the expectation in\nt0001 that the recorded gitdir will match what `pwd` says will be\nviolated.\n\nLet's address this by forcing the comparison to be case-insensitive when\n`core.ignoreCase` is `true`.\n\nReported by Jameson Miller.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n t/t0001-init.sh | 14 ++++++++++++++\n 1 file changed, 14 insertions(+)\n\ndiff --git a/t/t0001-init.sh b/t/t0001-init.sh\nindex 42a263cada..68f713884f 100755\n--- a/t/t0001-init.sh\n+++ b/t/t0001-init.sh\n@@ -307,10 +307,22 @@ test_expect_success 'init prefers command line to GIT_DIR' '\n \ttest_path_is_missing otherdir/refs\n '\n\n+downcase_on_case_insensitive_fs () {\n+\ttest true = \"$(git config --get --type=bool core.ignorecase)\" ||\n+\treturn 0\n+\n+\tfor f\n+\tdo\n+\t\ttr A-Z a-z <\"$f\" >\"$f\".downcased &&\n+\t\tmv -f \"$f\".downcased \"$f\" || return 1\n+\tdone\n+}\n+\n test_expect_success 'init with separate gitdir' '\n \trm -rf newdir &&\n \tgit init --separate-git-dir realgitdir newdir &&\n \techo \"gitdir: $(pwd)/realgitdir\" >expected &&\n+\tdowncase_on_case_insensitive_fs expected newdir/.git &&\n \ttest_cmp expected newdir/.git &&\n \ttest_path_is_dir realgitdir/refs\n '\n@@ -365,6 +377,7 @@ test_expect_success 're-init to update git link' '\n \tgit init --separate-git-dir ../surrealgitdir\n \t) &&\n \techo \"gitdir: $(pwd)/surrealgitdir\" >expected &&\n+\tdowncase_on_case_insensitive_fs expected newdir/.git &&\n \ttest_cmp expected newdir/.git &&\n \ttest_path_is_dir surrealgitdir/refs &&\n \ttest_path_is_missing realgitdir/refs\n@@ -378,6 +391,7 @@ test_expect_success 're-init to move gitdir' '\n \tgit init --separate-git-dir ../realgitdir\n \t) &&\n \techo \"gitdir: $(pwd)/realgitdir\" >expected &&\n+\tdowncase_on_case_insensitive_fs expected newdir/.git &&\n \ttest_cmp expected newdir/.git &&\n \ttest_path_is_dir realgitdir/refs\n '\n--\ngitgitgadget\n\n"},{"id":"377757","messageId":"xmqqh88ikfpb.fsf@gitster-ct.c.googlers.com","threadId":"51268","inReplyTo":"nycvar.QRO.7.76.6.1906211632570.44@tvgsbejvaqbjf.bet","subject":"Re: [PATCH v2 1/1] t0001: fix on case-insensitive filesystems","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2019-06-21T17:31:44Z","receivedAt":"2019-06-21T17:31:54Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n\n> [Re-sending, as the Git mailing list seems to have decided to silently\n> drop this patch, I cannot see it on public-inbox.org, at least]\n\nMove that below the three-dash lines; otherwise the above two lines\nwill make your in-body From: ineffective.\n\n>\n> From: Johannes Schindelin <johannes.schindelin@gmx.de>\n>\n> On a case-insensitive filesystem, such as HFS+ or NTFS, it is possible\n> that the idea Bash has of the current directory differs in case from\n> what Git thinks it is. That's totally okay, though, and we should not\n> ...\n> Let's address this by forcing the comparison to be case-insensitive when\n> `core.ignoreCase` is `true`.\n>\n> Reported by Jameson Miller.\n>\n> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n> ---\n>  t/t0001-init.sh | 14 ++++++++++++++\n>  1 file changed, 14 insertions(+)\n>\n> diff --git a/t/t0001-init.sh b/t/t0001-init.sh\n> index 42a263cada..68f713884f 100755\n> --- a/t/t0001-init.sh\n> +++ b/t/t0001-init.sh\n> @@ -307,10 +307,22 @@ test_expect_success 'init prefers command line to GIT_DIR' '\n>  \ttest_path_is_missing otherdir/refs\n>  '\n>\n> +downcase_on_case_insensitive_fs () {\n> +\ttest true = \"$(git config --get --type=bool core.ignorecase)\" ||\n> +\treturn 0\n> +\n> +\tfor f\n> +\tdo\n> +\t\ttr A-Z a-z <\"$f\" >\"$f\".downcased &&\n> +\t\tmv -f \"$f\".downcased \"$f\" || return 1\n\nIt is easier to read to enclose the whole filename inside dq pair,\ni.e.\n\n\t\ttr A-Z a-z <\"$f\" >\"$f.downcased\" &&\n\t\tmv -f \"$f.downcased\" \"$f\" || return 1\n\nNot grave enough to be worthy of a reroll on this one alone, though.\n\n>  test_expect_success 'init with separate gitdir' '\n>  \trm -rf newdir &&\n>  \tgit init --separate-git-dir realgitdir newdir &&\n>  \techo \"gitdir: $(pwd)/realgitdir\" >expected &&\n> +\tdowncase_on_case_insensitive_fs expected newdir/.git &&\n\nIt is somewhat brittle to munge what is in \"newdir/.git\", which will\naffect later tests that use newdir/ as a repository (this one will\nbe removed soon, but the last one in the sequence this patch touches\nwill persist and is used by other tests).  It's not like we are\ntesting that Git will function OK even after futzing with the \".git\"\npointer file (if so, we'd want a separate test that specifically is\ndesigned to test that behaviour).\n\nI wonder if we want (possibly local) test_cmp_fspath that can be\nused more like\n\n\ttest_cmp_fspath \"$(pwd)/realgitdir\" \"$(sed -e \"s/^gitdir: //\" newdir/.git)\"\n\nto compare two paths, honoring the case sensitivity of the\nfilesystem.\n\n>  \ttest_cmp expected newdir/.git &&\n>  \ttest_path_is_dir realgitdir/refs\n>  '\n> @@ -365,6 +377,7 @@ test_expect_success 're-init to update git link' '\n>  \tgit init --separate-git-dir ../surrealgitdir\n>  \t) &&\n>  \techo \"gitdir: $(pwd)/surrealgitdir\" >expected &&\n> +\tdowncase_on_case_insensitive_fs expected newdir/.git &&\n>  \ttest_cmp expected newdir/.git &&\n>  \ttest_path_is_dir surrealgitdir/refs &&\n>  \ttest_path_is_missing realgitdir/refs\n> @@ -378,6 +391,7 @@ test_expect_success 're-init to move gitdir' '\n>  \tgit init --separate-git-dir ../realgitdir\n>  \t) &&\n>  \techo \"gitdir: $(pwd)/realgitdir\" >expected &&\n> +\tdowncase_on_case_insensitive_fs expected newdir/.git &&\n>  \ttest_cmp expected newdir/.git &&\n>  \ttest_path_is_dir realgitdir/refs\n>  '\n> --\n> gitgitgadget\n"},{"id":"377767","messageId":"878stu91jl.fsf@evledraar.gmail.com","threadId":"51268","inReplyTo":"20190609201302.GX8616@genre.crustytoothpaste.net","subject":"Re: [PATCH 1/1] t0001: fix on case-insensitive filesystems","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2019-06-21T19:33:02Z","receivedAt":"2019-06-21T19:33:06Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Sun, Jun 09 2019, brian m. carlson wrote:\n\n> On 2019-06-08 at 14:43:43, Johannes Schindelin via GitGitGadget wrote:\n>> diff --git a/t/t0001-init.sh b/t/t0001-init.sh\n>> index 42a263cada..f54a69e2d9 100755\n>> --- a/t/t0001-init.sh\n>> +++ b/t/t0001-init.sh\n>> @@ -307,10 +307,20 @@ test_expect_success 'init prefers command line to GIT_DIR' '\n>>  \ttest_path_is_missing otherdir/refs\n>>  '\n>>\n>> +downcase_on_case_insensitive_fs () {\n>> +\ttest false = \"$(git config --get core.filemode)\" || return 0\n>> +\tfor f\n>\n> TIL that “for f” is equivalent to “for f in \"$@\"”. Thanks for teaching\n> me something new.\n\nSee also test_have_prereq in test-lib-functions.sh where this trick is\ncombined with IFS to loop over a \"param,like,this\" split by \",\".\n"},{"id":"377857","messageId":"nycvar.QRO.7.76.6.1906241212220.44@tvgsbejvaqbjf.bet","threadId":"51268","inReplyTo":"xmqqh88ikfpb.fsf@gitster-ct.c.googlers.com","subject":"Re: [PATCH v2 1/1] t0001: fix on case-insensitive filesystems","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2019-06-24T10:13:44Z","receivedAt":"2019-06-24T10:13:43Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Junio,\n\nOn Fri, 21 Jun 2019, Junio C Hamano wrote:\n\n> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n>\n> > [Re-sending, as the Git mailing list seems to have decided to silently\n> > drop this patch, I cannot see it on public-inbox.org, at least]\n>\n> Move that below the three-dash lines; otherwise the above two lines\n> will make your in-body From: ineffective.\n\nIndeed, sorry, I forgot.\n\n> > diff --git a/t/t0001-init.sh b/t/t0001-init.sh\n> > index 42a263cada..68f713884f 100755\n> > --- a/t/t0001-init.sh\n> > +++ b/t/t0001-init.sh\n> > @@ -307,10 +307,22 @@ test_expect_success 'init prefers command line to GIT_DIR' '\n> >  \ttest_path_is_missing otherdir/refs\n> >  '\n> >\n> > +downcase_on_case_insensitive_fs () {\n> > +\ttest true = \"$(git config --get --type=bool core.ignorecase)\" ||\n> > +\treturn 0\n> > +\n> > +\tfor f\n> > +\tdo\n> > +\t\ttr A-Z a-z <\"$f\" >\"$f\".downcased &&\n> > +\t\tmv -f \"$f\".downcased \"$f\" || return 1\n>\n> It is easier to read to enclose the whole filename inside dq pair,\n> i.e.\n>\n> \t\ttr A-Z a-z <\"$f\" >\"$f.downcased\" &&\n> \t\tmv -f \"$f.downcased\" \"$f\" || return 1\n\nOkay.\n\n> Not grave enough to be worthy of a reroll on this one alone, though.\n>\n> >  test_expect_success 'init with separate gitdir' '\n> >  \trm -rf newdir &&\n> >  \tgit init --separate-git-dir realgitdir newdir &&\n> >  \techo \"gitdir: $(pwd)/realgitdir\" >expected &&\n> > +\tdowncase_on_case_insensitive_fs expected newdir/.git &&\n>\n> It is somewhat brittle to munge what is in \"newdir/.git\", which will\n> affect later tests that use newdir/ as a repository (this one will\n> be removed soon, but the last one in the sequence this patch touches\n> will persist and is used by other tests).  It's not like we are\n> testing that Git will function OK even after futzing with the \".git\"\n> pointer file (if so, we'd want a separate test that specifically is\n> designed to test that behaviour).\n>\n> I wonder if we want (possibly local) test_cmp_fspath that can be\n> used more like\n>\n> \ttest_cmp_fspath \"$(pwd)/realgitdir\" \"$(sed -e \"s/^gitdir: //\" newdir/.git)\"\n>\n> to compare two paths, honoring the case sensitivity of the\n> filesystem.\n\nI agree that that's a much better approach to fix the issue.\n\nThanks,\nDscho\n\n>\n> >  \ttest_cmp expected newdir/.git &&\n> >  \ttest_path_is_dir realgitdir/refs\n> >  '\n> > @@ -365,6 +377,7 @@ test_expect_success 're-init to update git link' '\n> >  \tgit init --separate-git-dir ../surrealgitdir\n> >  \t) &&\n> >  \techo \"gitdir: $(pwd)/surrealgitdir\" >expected &&\n> > +\tdowncase_on_case_insensitive_fs expected newdir/.git &&\n> >  \ttest_cmp expected newdir/.git &&\n> >  \ttest_path_is_dir surrealgitdir/refs &&\n> >  \ttest_path_is_missing realgitdir/refs\n> > @@ -378,6 +391,7 @@ test_expect_success 're-init to move gitdir' '\n> >  \tgit init --separate-git-dir ../realgitdir\n> >  \t) &&\n> >  \techo \"gitdir: $(pwd)/realgitdir\" >expected &&\n> > +\tdowncase_on_case_insensitive_fs expected newdir/.git &&\n> >  \ttest_cmp expected newdir/.git &&\n> >  \ttest_path_is_dir realgitdir/refs\n> >  '\n> > --\n> > gitgitgadget\n>\n"},{"id":"377900","messageId":"xmqqimsuj4ft.fsf@gitster-ct.c.googlers.com","threadId":"51268","inReplyTo":"nycvar.QRO.7.76.6.1906241212220.44@tvgsbejvaqbjf.bet","subject":"Re: [PATCH v2 1/1] t0001: fix on case-insensitive filesystems","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2019-06-24T17:09:26Z","receivedAt":"2019-06-24T17:09:34Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n\n>> I wonder if we want (possibly local) test_cmp_fspath that can be\n>> used more like\n>>\n>> \ttest_cmp_fspath \"$(pwd)/realgitdir\" \"$(sed -e \"s/^gitdir: //\" newdir/.git)\"\n>>\n>> to compare two paths, honoring the case sensitivity of the\n>> filesystem.\n>\n> I agree that that's a much better approach to fix the issue.\n\nI find that response somewhat surprising :-|.  In any case, I am not\nsure what kind of 'path' other than the filesystem one we would deal\nwith in the context of Git and its test suite, so perhaps we should\ndrop 'fs' from the name of the helper function if we were to go that\nroute.\n\n\n"},{"id":"377904","messageId":"nycvar.QRO.7.76.6.1906241937010.44@tvgsbejvaqbjf.bet","threadId":"51268","inReplyTo":"xmqqimsuj4ft.fsf@gitster-ct.c.googlers.com","subject":"Re: [PATCH v2 1/1] t0001: fix on case-insensitive filesystems","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2019-06-24T17:38:18Z","receivedAt":"2019-06-24T17:38:13Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Junio,\n\nOn Mon, 24 Jun 2019, Junio C Hamano wrote:\n\n> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n>\n> >> I wonder if we want (possibly local) test_cmp_fspath that can be\n> >> used more like\n> >>\n> >> \ttest_cmp_fspath \"$(pwd)/realgitdir\" \"$(sed -e \"s/^gitdir: //\" newdir/.git)\"\n> >>\n> >> to compare two paths, honoring the case sensitivity of the\n> >> filesystem.\n> >\n> > I agree that that's a much better approach to fix the issue.\n>\n> I find that response somewhat surprising :-|.  In any case, I am not\n> sure what kind of 'path' other than the filesystem one we would deal\n> with in the context of Git and its test suite, so perhaps we should\n> drop 'fs' from the name of the helper function if we were to go that\n> route.\n\nThe other path category is the paths in the index, which _are_\ncase-sensitive, no matter what core.ignoreCase says.\n\nSo I'd rather keep the `fs`.\n\nCiao,\nDscho\n"},{"id":"377905","messageId":"nycvar.QRO.7.76.6.1906241938450.44@tvgsbejvaqbjf.bet","threadId":"51268","inReplyTo":"1f0ceee8687e9032a7777f764b34b1c9ccc68f38.1561379363.git.gitgitgadget@gmail.com","subject":"Re: [PATCH v3 1/1] t0001: fix on case-insensitive filesystems","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2019-06-24T17:40:05Z","receivedAt":"2019-06-24T17:39:58Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"From: Johannes Schindelin <johannes.schindelin@gmx.de>\n\nOn a case-insensitive filesystem, such as HFS+ or NTFS, it is possible\nthat the idea Bash has of the current directory differs in case from\nwhat Git thinks it is. That's totally okay, though, and we should not\nexpect otherwise.\n\nOn Windows, for example, when you call\n\n\tcd C:\\GIT-SDK-64\n\nin a PowerShell and there exists a directory called `C:\\git-sdk-64`, the\ncurrent directory will be reported in all upper-case. Even in a Bash\nthat you might call from that PowerShell. Git, however, will have\nnormalized this via `GetFinalPathByHandle()`, and the expectation in\nt0001 that the recorded gitdir will match what `pwd` says will be\nviolated.\n\nLet's address this by comparing these paths in a case-insensitive\nmanner when `core.ignoreCase` is `true`.\n\nReported by Jameson Miller.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n\n\tAgain, re-sending, as something in the mail (my guess is the\n\tnon-ASCII character in Martin's surname) seems to upset vger so\n\tmuch that it drops the mail unceremoniously.\n\n t/t0001-init.sh         | 22 ++++++++--------------\n t/test-lib-functions.sh | 15 +++++++++++++++\n 2 files changed, 23 insertions(+), 14 deletions(-)\n\ndiff --git a/t/t0001-init.sh b/t/t0001-init.sh\nindex 42a263cada..b796fa25ac 100755\n--- a/t/t0001-init.sh\n+++ b/t/t0001-init.sh\n@@ -310,8 +310,8 @@ test_expect_success 'init prefers command line to GIT_DIR' '\n test_expect_success 'init with separate gitdir' '\n \trm -rf newdir &&\n \tgit init --separate-git-dir realgitdir newdir &&\n-\techo \"gitdir: $(pwd)/realgitdir\" >expected &&\n-\ttest_cmp expected newdir/.git &&\n+\tnewdir_git=\"$(cat newdir/.git)\" &&\n+\ttest_cmp_fspath \"$(pwd)/realgitdir\" \"${newdir_git#gitdir: }\" &&\n \ttest_path_is_dir realgitdir/refs\n '\n\n@@ -360,12 +360,9 @@ test_expect_success 're-init on .git file' '\n '\n\n test_expect_success 're-init to update git link' '\n-\t(\n-\tcd newdir &&\n-\tgit init --separate-git-dir ../surrealgitdir\n-\t) &&\n-\techo \"gitdir: $(pwd)/surrealgitdir\" >expected &&\n-\ttest_cmp expected newdir/.git &&\n+\tgit -C newdir init --separate-git-dir ../surrealgitdir &&\n+\tnewdir_git=\"$(cat newdir/.git)\" &&\n+\ttest_cmp_fspath \"$(pwd)/surrealgitdir\" \"${newdir_git#gitdir: }\" &&\n \ttest_path_is_dir surrealgitdir/refs &&\n \ttest_path_is_missing realgitdir/refs\n '\n@@ -373,12 +370,9 @@ test_expect_success 're-init to update git link' '\n test_expect_success 're-init to move gitdir' '\n \trm -rf newdir realgitdir surrealgitdir &&\n \tgit init newdir &&\n-\t(\n-\tcd newdir &&\n-\tgit init --separate-git-dir ../realgitdir\n-\t) &&\n-\techo \"gitdir: $(pwd)/realgitdir\" >expected &&\n-\ttest_cmp expected newdir/.git &&\n+\tgit -C newdir init --separate-git-dir ../realgitdir &&\n+\tnewdir_git=\"$(cat newdir/.git)\" &&\n+\ttest_cmp_fspath \"$(pwd)/realgitdir\" \"${newdir_git#gitdir: }\" &&\n \ttest_path_is_dir realgitdir/refs\n '\n\ndiff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh\nindex 80402a428f..26218a6c53 100644\n--- a/t/test-lib-functions.sh\n+++ b/t/test-lib-functions.sh\n@@ -879,6 +879,21 @@ test_cmp_rev () {\n \tfi\n }\n\n+# Compare paths respecting core.ignoreCase\n+test_cmp_fspath () {\n+\tif test \"x$1\" = \"x$2\"\n+\tthen\n+\t\treturn 0\n+\tfi\n+\n+\tif test true != \"$(git config --get --type=bool core.ignorecase)\"\n+\tthen\n+\t\treturn 1\n+\tfi\n+\n+\ttest \"x$(echo \"$1\" | tr A-Z a-z)\" =  \"x$(echo \"$2\" | tr A-Z a-z)\"\n+}\n+\n # Print a sequence of integers in increasing order, either with\n # two arguments (start and end):\n #\n--\ngitgitgadget\n\n"},{"id":"377921","messageId":"xmqqftnyhkyu.fsf@gitster-ct.c.googlers.com","threadId":"51268","inReplyTo":"nycvar.QRO.7.76.6.1906241938450.44@tvgsbejvaqbjf.bet","subject":"Re: [PATCH v3 1/1] t0001: fix on case-insensitive filesystems","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2019-06-24T18:55:21Z","receivedAt":"2019-06-24T18:55:34Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n\n> From: Johannes Schindelin <johannes.schindelin@gmx.de>\n>\n> On a case-insensitive filesystem, such as HFS+ or NTFS, it is possible\n> that the idea Bash has of the current directory differs in case from\n> what Git thinks it is. That's totally okay, though, and we should not\n> expect otherwise.\n>\n> On Windows, for example, when you call\n>\n> \tcd C:\\GIT-SDK-64\n>\n> in a PowerShell and there exists a directory called `C:\\git-sdk-64`, the\n> current directory will be reported in all upper-case. Even in a Bash\n> that you might call from that PowerShell. Git, however, will have\n> normalized this via `GetFinalPathByHandle()`, and the expectation in\n> t0001 that the recorded gitdir will match what `pwd` says will be\n> violated.\n>\n> Let's address this by comparing these paths in a case-insensitive\n> manner when `core.ignoreCase` is `true`.\n>\n> Reported by Jameson Miller.\n>\n> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n> ---\n>\n> \tAgain, re-sending, as something in the mail (my guess is the\n> \tnon-ASCII character in Martin's surname) seems to upset vger so\n> \tmuch that it drops the mail unceremoniously.\n\nHmph, but in the copy I am responding to, I can see non-ASCII\nMartin's surname in the CC: header just fine, so vger may not\nbe at fault, perhaps?\n\nIn any case, cmp-fspath looks nicely implemented.  Will queue.\n\nThanks.\n\n>\n>  t/t0001-init.sh         | 22 ++++++++--------------\n>  t/test-lib-functions.sh | 15 +++++++++++++++\n>  2 files changed, 23 insertions(+), 14 deletions(-)\n>\n> diff --git a/t/t0001-init.sh b/t/t0001-init.sh\n> index 42a263cada..b796fa25ac 100755\n> --- a/t/t0001-init.sh\n> +++ b/t/t0001-init.sh\n> @@ -310,8 +310,8 @@ test_expect_success 'init prefers command line to GIT_DIR' '\n>  test_expect_success 'init with separate gitdir' '\n>  \trm -rf newdir &&\n>  \tgit init --separate-git-dir realgitdir newdir &&\n> -\techo \"gitdir: $(pwd)/realgitdir\" >expected &&\n> -\ttest_cmp expected newdir/.git &&\n> +\tnewdir_git=\"$(cat newdir/.git)\" &&\n> +\ttest_cmp_fspath \"$(pwd)/realgitdir\" \"${newdir_git#gitdir: }\" &&\n>  \ttest_path_is_dir realgitdir/refs\n>  '\n>\n> @@ -360,12 +360,9 @@ test_expect_success 're-init on .git file' '\n>  '\n>\n>  test_expect_success 're-init to update git link' '\n> -\t(\n> -\tcd newdir &&\n> -\tgit init --separate-git-dir ../surrealgitdir\n> -\t) &&\n> -\techo \"gitdir: $(pwd)/surrealgitdir\" >expected &&\n> -\ttest_cmp expected newdir/.git &&\n> +\tgit -C newdir init --separate-git-dir ../surrealgitdir &&\n> +\tnewdir_git=\"$(cat newdir/.git)\" &&\n> +\ttest_cmp_fspath \"$(pwd)/surrealgitdir\" \"${newdir_git#gitdir: }\" &&\n>  \ttest_path_is_dir surrealgitdir/refs &&\n>  \ttest_path_is_missing realgitdir/refs\n>  '\n> @@ -373,12 +370,9 @@ test_expect_success 're-init to update git link' '\n>  test_expect_success 're-init to move gitdir' '\n>  \trm -rf newdir realgitdir surrealgitdir &&\n>  \tgit init newdir &&\n> -\t(\n> -\tcd newdir &&\n> -\tgit init --separate-git-dir ../realgitdir\n> -\t) &&\n> -\techo \"gitdir: $(pwd)/realgitdir\" >expected &&\n> -\ttest_cmp expected newdir/.git &&\n> +\tgit -C newdir init --separate-git-dir ../realgitdir &&\n> +\tnewdir_git=\"$(cat newdir/.git)\" &&\n> +\ttest_cmp_fspath \"$(pwd)/realgitdir\" \"${newdir_git#gitdir: }\" &&\n>  \ttest_path_is_dir realgitdir/refs\n>  '\n>\n> diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh\n> index 80402a428f..26218a6c53 100644\n> --- a/t/test-lib-functions.sh\n> +++ b/t/test-lib-functions.sh\n> @@ -879,6 +879,21 @@ test_cmp_rev () {\n>  \tfi\n>  }\n>\n> +# Compare paths respecting core.ignoreCase\n> +test_cmp_fspath () {\n> +\tif test \"x$1\" = \"x$2\"\n> +\tthen\n> +\t\treturn 0\n> +\tfi\n> +\n> +\tif test true != \"$(git config --get --type=bool core.ignorecase)\"\n> +\tthen\n> +\t\treturn 1\n> +\tfi\n> +\n> +\ttest \"x$(echo \"$1\" | tr A-Z a-z)\" =  \"x$(echo \"$2\" | tr A-Z a-z)\"\n> +}\n> +\n>  # Print a sequence of integers in increasing order, either with\n>  # two arguments (start and end):\n>  #\n> --\n> gitgitgadget\n"},{"id":"377925","messageId":"xmqqblymhjou.fsf@gitster-ct.c.googlers.com","threadId":"51268","inReplyTo":"nycvar.QRO.7.76.6.1906241937010.44@tvgsbejvaqbjf.bet","subject":"Re: [PATCH v2 1/1] t0001: fix on case-insensitive filesystems","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2019-06-24T19:22:57Z","receivedAt":"2019-06-24T19:23:05Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n\n> The other path category is the paths in the index, which _are_\n> case-sensitive, no matter what core.ignoreCase says.\n>\n> So I'd rather keep the `fs`.\n\nSensible.  Thanks.\n"},{"id":"377963","messageId":"nycvar.QRO.7.76.6.1906251147581.44@tvgsbejvaqbjf.bet","threadId":"51268","inReplyTo":"xmqqftnyhkyu.fsf@gitster-ct.c.googlers.com","subject":"vger vs GitGitGadget, was Re: [PATCH v3 1/1] t0001: fix on case-insensitive filesystems","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2019-06-25T10:50:00Z","receivedAt":"2019-06-25T10:49:58Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Junio,\n\nOn Mon, 24 Jun 2019, Junio C Hamano wrote:\n\n> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n>\n> > ---\n> >\n> > \tAgain, re-sending, as something in the mail (my guess is the\n> > \tnon-ASCII character in Martin's surname) seems to upset vger so\n> > \tmuch that it drops the mail unceremoniously.\n>\n> Hmph, but in the copy I am responding to, I can see non-ASCII\n> Martin's surname in the CC: header just fine, so vger may not\n> be at fault, perhaps?\n\nYou can see the non-ASCII surname fine because you are responding to my\nreply, which I sent via Alpine.\n\nThe original mail was sent by GitGitGadget via nodemailer, using GMail's\nSMTP end point, and the fact that _I_ received it means that it was\npartially successful in delivering that mail.\n\nI can only assume that GMX or Alpine did something to the mail that made\nit look better to vger.\n\n*goes-to-unleash-the-power-of-investigation*\n\nSo I have a theory now why vger regurgitated on that mail: it had the\nunquoted name brian m. carlson in the Cc: line.\n\nExpecting that this is the culprit, I opened\nhttps://github.com/gitgitgadget/gitgitgadget/pull/98 to fix that.\n\nThanks,\nDscho\n"},{"id":"378037","messageId":"xmqqa7e5fo4b.fsf@gitster-ct.c.googlers.com","threadId":"51268","inReplyTo":"nycvar.QRO.7.76.6.1906251147581.44@tvgsbejvaqbjf.bet","subject":"Re: vger vs GitGitGadget, was Re: [PATCH v3 1/1] t0001: fix on case-insensitive filesystems","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2019-06-25T19:42:28Z","receivedAt":"2019-06-25T19:42:33Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n\n>> > \tAgain, re-sending, as something in the mail (my guess is the\n>> > \tnon-ASCII character in Martin's surname) seems to upset vger so\n>> > \tmuch that it drops the mail unceremoniously.\n>>\n>> Hmph, but in the copy I am responding to, I can see non-ASCII\n>> Martin's surname in the CC: header just fine, so vger may not\n>> be at fault, perhaps?\n>\n> You can see the non-ASCII surname fine because you are responding to my\n> reply, which I sent via Alpine.\n\nAh, OK. So the difference is on the sending end and vger is merely\nbeing a coalmine canary for detectig broken sender.\n\n> So I have a theory now why vger regurgitated on that mail: it had the\n> unquoted name brian m. carlson in the Cc: line.\n\nAh, yes, I used to get that when sending out my messages, as\nGnus/message mode lets me write any garbage on To: or Cc: line ;-)\n"}]}