Skip to content

Commit 3fa5e0d

Browse files
jrngitster
authored andcommitted
ssh: 'simple' variant does not support --port
When trying to connect to an ssh:// URL with port explicitly specified and the ssh command configured with GIT_SSH does not support such a setting, it is less confusing to error out than to silently suppress the port setting and continue. This requires updating the GIT_SSH setting in t5603-clone-dirname.sh. That test is about the directory name produced when cloning various URLs. It uses an ssh wrapper that ignores all its arguments but does not declare that it supports a port argument; update it to set GIT_SSH_VARIANT=ssh to do so. (Real-life ssh wrappers that pass a port argument to OpenSSH would also support -G and would not require such an update.) Reported-by: William Yan <[email protected]> Signed-off-by: Jonathan Nieder <[email protected]> Acked-by: Stefan Beller <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent a3f5b66 commit 3fa5e0d

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

connect.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -967,11 +967,20 @@ static void push_ssh_options(struct argv_array *args, struct argv_array *env,
967967
if (variant == VARIANT_TORTOISEPLINK)
968968
argv_array_push(args, "-batch");
969969

970-
if (port && variant != VARIANT_SIMPLE) {
971-
if (variant == VARIANT_SSH)
970+
if (port) {
971+
switch (variant) {
972+
case VARIANT_AUTO:
973+
BUG("VARIANT_AUTO passed to push_ssh_options");
974+
case VARIANT_SIMPLE:
975+
die("ssh variant 'simple' does not support setting port");
976+
case VARIANT_SSH:
972977
argv_array_push(args, "-p");
973-
else
978+
break;
979+
case VARIANT_PLINK:
980+
case VARIANT_PUTTY:
981+
case VARIANT_TORTOISEPLINK:
974982
argv_array_push(args, "-P");
983+
}
975984

976985
argv_array_push(args, port);
977986
}

t/t5601-clone.sh

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -378,12 +378,18 @@ test_expect_success 'variant=auto picks based on basename' '
378378

379379
test_expect_success 'simple does not support -4/-6' '
380380
copy_ssh_wrapper_as "$TRASH_DIRECTORY/simple" &&
381-
test_must_fail git clone -4 "[myhost:123]:src" ssh-bracket-clone-simple
381+
test_must_fail git clone -4 "myhost:src" ssh-4-clone-simple
382+
'
383+
384+
test_expect_success 'simple does not support port' '
385+
copy_ssh_wrapper_as "$TRASH_DIRECTORY/simple" &&
386+
test_must_fail git clone "[myhost:123]:src" ssh-bracket-clone-simple
382387
'
383388

384389
test_expect_success 'uplink is treated as simple' '
385390
copy_ssh_wrapper_as "$TRASH_DIRECTORY/uplink" &&
386-
git clone "[myhost:123]:src" ssh-bracket-clone-uplink &&
391+
test_must_fail git clone "[myhost:123]:src" ssh-bracket-clone-uplink &&
392+
git clone "myhost:src" ssh-clone-uplink &&
387393
expect_ssh myhost src
388394
'
389395

t/t5603-clone-dirname.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ test_expect_success 'setup ssh wrapper' '
1111
git upload-pack "$TRASH_DIRECTORY"
1212
EOF
1313
GIT_SSH="$TRASH_DIRECTORY/ssh-wrapper" &&
14+
GIT_SSH_VARIANT=ssh &&
1415
export GIT_SSH &&
16+
export GIT_SSH_VARIANT &&
1517
export TRASH_DIRECTORY
1618
'
1719

0 commit comments

Comments
 (0)