Hi Jonathan, [I only saw that you replied to 3/5 with v2 after writing this reply, but it would apply to v2's 3/5, too] On Mon, 23 Oct 2017, Jonathan Nieder wrote: > diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh > index 86811a0c35..fd94dd40d2 100755 > --- a/t/t5601-clone.sh > +++ b/t/t5601-clone.sh > @@ -384,6 +384,20 @@ test_expect_success 'uplink is treated as simple' ' > expect_ssh myhost src > ' > > +test_expect_success 'OpenSSH-like uplink is treated as ssh' ' > + write_script "$TRASH_DIRECTORY/uplink" <<-EOF && > + if test "\$1" = "-G" > + then > + exit 0 > + fi && > + exec "\$TRASH_DIRECTORY/ssh$X" "\$@" > + EOF > + GIT_SSH="$TRASH_DIRECTORY/uplink" && > + export GIT_SSH && > + git clone "[myhost:123]:src" ssh-bracket-clone-sshlike-uplink && > + expect_ssh "-p 123" myhost src > +' > + > test_expect_success 'plink is treated specially (as putty)' ' > copy_ssh_wrapper_as "$TRASH_DIRECTORY/plink" && > git clone "[myhost:123]:src" ssh-bracket-clone-plink-0 && This breaks on Windows. And it is not immediately obvious how so, so let me explain: As you know, on Windows there is no executable flag. There is the .exe file extension to indicate an executable (and .com and .bat and .cmd are also handled as executable, at least as executable script). Now, what happens if you call "abc" in the MSYS2 Bash and there is no script called "abc" but an executable called "abc.exe" in the PATH? Why, of course we execute that executable. It has to, because if "abc.exe" would be renamed into "abc", it would not work any longer. That is also the reason why that "copy_ssh_wrapper" helper function automatically appends that .exe file suffix on Windows: it has to. Every workaround breaks down at some point, and this workaround is no exception. What should the MSYS2 Bash do if asked to overwrite "abc" and there is only an "abc.exe"? It actually overwrites "abc.exe" and moves on. And this is where we are here: the previous test case copied the ssh wrapper as "uplink". Except on Windows, it is "uplink.exe". And your newly introduced test case overwrites it. And then it tells Git specifically to look for "uplink", and Git does *not* append that .exe suffix automatically as the MSYS2 Bash would do, because git.exe is not intended to work MSYS2-like. As a consequence, the test fails. Could you please squash in this, to fix the test on Windows? -- snipsnap -- diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh index ec4b17bca62..1afcbd00617 100755 --- a/t/t5601-clone.sh +++ b/t/t5601-clone.sh @@ -393,6 +393,7 @@ test_expect_success 'simple does not support port' ' test_expect_success 'uplink is treated as simple' ' copy_ssh_wrapper_as "$TRASH_DIRECTORY/uplink" && + test_when_finished "rm \"$TRASH_DIRECTORY/uplink$X\"" && test_must_fail git clone "[myhost:123]:src" ssh-bracket-clone-uplink && git clone "myhost:src" ssh-clone-uplink && expect_ssh myhost src