Thread (17 messages) 17 messages, 5 authors, 2016-06-15

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help