On 2019-06-08 at 14:43:43, Johannes Schindelin via GitGitGadget wrote: > diff --git a/t/t0001-init.sh b/t/t0001-init.sh > index 42a263cada..f54a69e2d9 100755 > --- a/t/t0001-init.sh > +++ b/t/t0001-init.sh > @@ -307,10 +307,20 @@ test_expect_success 'init prefers command line to GIT_DIR' ' > test_path_is_missing otherdir/refs > ' > > +downcase_on_case_insensitive_fs () { > + test false = "$(git config --get core.filemode)" || return 0 > + for f TIL that “for f” is equivalent to “for f in "$@"”. Thanks for teaching me something new. > + do > + tr A-Z a-z <"$f" >"$f".downcased && > + mv -f "$f".downcased "$f" || return 1 > + done > +} > + > test_expect_success 'init with separate gitdir' ' > rm -rf newdir && > git init --separate-git-dir realgitdir newdir && > echo "gitdir: $(pwd)/realgitdir" >expected && > + downcase_on_case_insensitive_fs expected newdir/.git && I wonder if there's maybe a simpler way. If we canonicalize paths when writing them to the gitdir file, then writing "$(pwd -P)" on the line above should produce the right result. Now, technically, POSIX doesn't require case canonicalization of the path with "pwd -P", but then again, POSIX doesn't permit case-insensitive file systems, and we know the behavior on macOS uses bash, which does the right thing in this case because it calls realpath(3). I've tested that it also does the right thing on Linux when the worktree containing the Git checkout is in a path with symlinks. I don't know how that works on Windows, but if it does, it might be simpler. -- brian m. carlson: Houston, Texas, US OpenPGP: https://keybase.io/bk2204
Attachment:
signature.asc
Description: PGP signature