Re: [PATCH 1/1] mingw: work around t2300's assuming non-Windows paths
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 20, 2016, 19:09 UTC
- Message-ID
- <xmqqmvmfu17f.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <a8bebe126bcd047720a13e90b85b8dccb7231187.1466246919.git.johannes.schindelin@gmx.de>
Johannes Schindelin <johannes.schindelin@gmx.de> writes:
Show 14 quoted lines
> On Windows, we have to juggle two different schemes of representing > paths: the native, Windows paths (the only ones known to the main > Git executable) on the one hand, and POSIX-ish ones used by the Bash > through MSYS2's POSIX emulation layer on the other hand. > > A Windows path looks like this: C:\git-sdk-64\usr\src\git. In modern > Windows, it is almost always legal to use forward slashes as directory > separators, which is the reason why the Git executable itself would use > the path C:/git-sdk-64/usr/src/git instead. The equivalent POSIX-ish > path would be: /c/git-sdk-64/usr/src/git. > > This patch works around the assumption of t2300-cd-to-toplevel.sh that > `git --exec-path` spits out a POSIX-ish path, by converting the output > accordingly.
Hmm, I am confused. `git --exec-path` _is_ meant to "spit out" a path that is usable when prepended/appended to $PATH [1], and it does _not_ have to be POSIX-ish path. It is totally up to the port to adjust it to the platform's convention how the $PATH environment variable is understood.
If $PATH cannot take C:/git-sdk-64/usr/src/git but does understand /c/git-sdk-64/usr/src/git, perhaps "git --exec-path" should be emitting the latter in the first place?
[Footnote]
*1* That after all was how we handled the painful 1.6 "'git-cmd' to 'git cmd'" transition (cf. $gmane/93793).
Show 30 quoted lines
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
> t/t2300-cd-to-toplevel.sh | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/t/t2300-cd-to-toplevel.sh b/t/t2300-cd-to-toplevel.sh
> index cccd7d9..c8de6d8 100755
> --- a/t/t2300-cd-to-toplevel.sh
> +++ b/t/t2300-cd-to-toplevel.sh
> @@ -4,11 +4,19 @@ test_description='cd_to_toplevel'
>
> . ./test-lib.sh
>
> +EXEC_PATH="$(git --exec-path)"
> +test_have_prereq !MINGW ||
> +case "$EXEC_PATH" in
> +[A-Za-z]:/*)
> + EXEC_PATH="/${EXEC_PATH%%:*}${EXEC_PATH#?:}"
> + ;;
> +esac
> +
> test_cd_to_toplevel () {
> test_expect_success $3 "$2" '
> (
> cd '"'$1'"' &&
> - PATH="$(git --exec-path):$PATH" &&
> + PATH="$EXEC_PATH:$PATH" &&
> . git-sh-setup &&
> cd_to_toplevel &&
> [ "$(pwd -P)" = "$TOPLEVEL" ]