Re: [PATCH] t1410: fix breakage on case-insensitive filesystems
From: Jeff King <hidden>
Date: 2016-06-15 23:02:54
Subsystem:
the rest · Maintainer:
Linus Torvalds
On Sun, Nov 09, 2014 at 06:56:45PM -0800, Junio C Hamano wrote:
quoted
We could fix this by using a "--" to disambiguate, but we are probably better off using names that are less confusing to make it more clear that they are unrelated to the working tree files. This patch turns "a/b" into "one/two".Hmph, but the branch a and the file A _do_ have names that are unrelated to each other, and it is only the case insensitive fs that is confused ;-). Renaming is not so bad and certainly is not wrong per-se as a workaround, but I have this suspicion that it sends a wrong message to people on such a filesystem, namely, "you cannot use Git to manage a file called 'master'", or something silly like that. Disambiguation with double-dashes does not have such a problem, and instead shows a way how scripts that are meant to be portable is written. More importantly, that is more in line with the problem description (i.e. we complain pointing out the ambiguity, implying that everything is fine as long as you disambiguate). So I would rather see the workaround done that way.
My main concern is that it leaves t1410 in an "accident waiting to happen" state, where some hapless developer will add a new test using a/b and not realizing they need to be careful to disambiguate. The test will pass for them on Linux, but some luckless OS X user will end up wasting time tracking down the error. Or another way of looking at it: it is perfectly possible to have git manage a file called "master" or even "HEAD". But that does not mean it is a _good idea_, or is without annoyances. :)
But that is only if this were before you actually wrote the patch. The above is not a preference strong enough to make me ask you to reroll ;-)
The alternate form is quite trivial. I think I still prefer the "one/two" version, but here is the "--" patch for reference. You can decide which to pick up. -- >8 -- Subject: t1410: fix breakage on case-insensitive filesystems Two tests recently added to t1410 create branches "a" and "a/b" to test d/f conflicts on reflogs. Earlier tests in that script create the path "A/B" in the working tree. There's no conflict on a case-sensitive filesystem, but on a case-insensitive one, "git log" will complain that "a/b" is both a revision and a working tree path. We can fix this by using "--" to disambiguate. Signed-off-by: Jeff King <redacted> --- t/t1410-reflog.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/t/t1410-reflog.sh b/t/t1410-reflog.sh
index 976c1d4..48bcd59 100755
--- a/t/t1410-reflog.sh
+++ b/t/t1410-reflog.sh@@ -258,7 +258,7 @@ test_expect_success 'stale dirs do not cause d/f conflicts (reflogs on)' ' git branch a/b master && echo "a/b@{0} branch: Created from master" >expect && - git log -g --format="%gd %gs" a/b >actual && + git log -g --format="%gd %gs" a/b -- >actual && test_cmp expect actual && git branch -d a/b &&
@@ -266,7 +266,7 @@ test_expect_success 'stale dirs do not cause d/f conflicts (reflogs on)' ' # we should move it out of the way to create "a" reflog git branch a master && echo "a@{0} branch: Created from master" >expect && - git log -g --format="%gd %gs" a >actual && + git log -g --format="%gd %gs" a -- >actual && test_cmp expect actual '
@@ -275,7 +275,7 @@ test_expect_success 'stale dirs do not cause d/f conflicts (reflogs off)' ' git branch a/b master && echo "a/b@{0} branch: Created from master" >expect && - git log -g --format="%gd %gs" a/b >actual && + git log -g --format="%gd %gs" a/b -- >actual && test_cmp expect actual && git branch -d a/b &&
@@ -283,7 +283,7 @@ test_expect_success 'stale dirs do not cause d/f conflicts (reflogs off)' ' # it already exists, which it does not git -c core.logallrefupdates=false branch a master && : >expect && - git log -g --format="%gd %gs" a >actual && + git log -g --format="%gd %gs" a -- >actual && test_cmp expect actual '
--
2.1.2.596.g7379948