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

Reply via email to