threads / patch / 37919

patcht1410: Fix for case insensitive filesystems

Subject: [PATCH] t1410: Fix for case insensitive filesystems

## tl;dr

3 messages between Nov 10, 2014 and Nov 10, 2014. Diffs are folded; open one to read it.

replies: 2people: 3as markdown or json

Brian Gernhardt· Nov 10, 2014, 01:48 UTC · lore

A pair of recently added tests used branches a and a/b, but earlier tests created files A and A/B. On case insensitive filesystems (such as HFS+), that causes git to complain about the name being ambiguous between branch and file. Resolve by renaming the branches to aa and aa/bb.

Signed-off-by: Brian Gernhardt <brian@gernhardtsoftware.com>
---
 t/t1410-reflog.sh | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)
Show changes to t/t1410-reflog.sh +18 −18
diff --git a/t/t1410-reflog.sh b/t/t1410-reflog.sh
index 976c1d4..ac31e19 100755
--- a/t/t1410-reflog.sh
+++ b/t/t1410-reflog.sh
@@ -254,36 +254,36 @@ test_expect_success 'checkout should not delete log for packed ref' '
 '
 
 test_expect_success 'stale dirs do not cause d/f conflicts (reflogs on)' '
-	test_when_finished "git branch -d a || git branch -d a/b" &&
+	test_when_finished "git branch -d aa || git branch -d aa/bb" &&
 
-	git branch a/b master &&
-	echo "a/b@{0} branch: Created from master" >expect &&
-	git log -g --format="%gd %gs" a/b >actual &&
+	git branch aa/bb master &&
+	echo "aa/bb@{0} branch: Created from master" >expect &&
+	git log -g --format="%gd %gs" aa/bb >actual &&
 	test_cmp expect actual &&
-	git branch -d a/b &&
+	git branch -d aa/bb &&
 
-	# now logs/refs/heads/a is a stale directory, but
-	# 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 &&
+	# now logs/refs/heads/aa is a stale directory, but
+	# we should move it out of the way to create "aa" reflog
+	git branch aa master &&
+	echo "aa@{0} branch: Created from master" >expect &&
+	git log -g --format="%gd %gs" aa >actual &&
 	test_cmp expect actual
 '
 
 test_expect_success 'stale dirs do not cause d/f conflicts (reflogs off)' '
-	test_when_finished "git branch -d a || git branch -d a/b" &&
+	test_when_finished "git branch -d aa || git branch -d aa/bb" &&
 
-	git branch a/b master &&
-	echo "a/b@{0} branch: Created from master" >expect &&
-	git log -g --format="%gd %gs" a/b >actual &&
+	git branch aa/bb master &&
+	echo "aa/bb@{0} branch: Created from master" >expect &&
+	git log -g --format="%gd %gs" aa/bb >actual &&
 	test_cmp expect actual &&
-	git branch -d a/b &&
+	git branch -d aa/bb &&
 
-	# same as before, but we only create a reflog for "a" if
+	# same as before, but we only create a reflog for "aa" if
 	# it already exists, which it does not
-	git -c core.logallrefupdates=false branch a master &&
+	git -c core.logallrefupdates=false branch aa master &&
 	: >expect &&
-	git log -g --format="%gd %gs" a >actual &&
+	git log -g --format="%gd %gs" aa >actual &&
 	test_cmp expect actual
 '
 
-- 
2.2.0.rc0.209.g31b9a22
Jeff King· Nov 10, 2014, 06:23 UTC · re: Brian Gernhardt · lore

Re: [PATCH] t1410: Fix for case insensitive filesystems

On Sun, Nov 09, 2014 at 08:48:06PM -0500, Brian Gernhardt wrote:
Show 5 quoted lines
> A pair of recently added tests used branches a and a/b, but earlier
> tests created files A and A/B.  On case insensitive filesystems (such
> as HFS+), that causes git to complain about the name being ambiguous
> between branch and file.  Resolve by renaming the branches to aa and
> aa/bb.
Already being discussed here:
  http://thread.gmane.org/gmane.comp.version-control.git/259250/focus=259253
:)
-Peff
Junio C Hamano· Nov 10, 2014, 06:34 UTC · re: Jeff King · lore

Re: [PATCH] t1410: Fix for case insensitive filesystems

On Sun, Nov 9, 2014 at 10:23 PM, Jeff King <peff@peff.net> wrote:
Show 13 quoted lines
> On Sun, Nov 09, 2014 at 08:48:06PM -0500, Brian Gernhardt wrote:
>
>> A pair of recently added tests used branches a and a/b, but earlier
>> tests created files A and A/B.  On case insensitive filesystems (such
>> as HFS+), that causes git to complain about the name being ambiguous
>> between branch and file.  Resolve by renaming the branches to aa and
>> aa/bb.
>
> Already being discussed here:
>
>   http://thread.gmane.org/gmane.comp.version-control.git/259250/focus=259253
>
> :)
Related tangent for a moderately near future.

One thing that we may want to play with around this topic is to try building an alternative "ref backend" that is backed by a filesystem, lays out things pretty much the same way as the current "refs" (i.e. one file per ref, directory hierarchy corresponds to slashes in the refname, one file per reflog, etc.), but can be stored on a case insensitive filesystem, as a demonstration of Ronnie's "ref-transaction" restructuring series.

Perhaps such a backend may store branch 'a' as 'refs/heads/a' while storing branch 'A' as 'refs/heads/%41' or something, and causes the right thing to happen when "for-each-ref" enumerates the refs by unquoting quoted names and when "checkout" asks to check out such a branch.

← back to recent threads