Re: [PATCH 1/1] t0001: fix on case-insensitive filesystems

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux