On Mittwoch, 2. Juli 2008, Steffen Prohaska wrote:
From: Edward Z. Yang <edwardzyang@xxxxxxxxxxxxxxxxx>
PuTTY requires -P while OpenSSH requires -p; if plink is detected
as GIT_SSH, use the alternate flag.
Signed-off-by: Edward Z. Yang <edwardzyang@xxxxxxxxxxxxxxxxx>
Signed-off-by: Steffen Prohaska <prohaska@xxxxxx>
---
connect.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/connect.c b/connect.c
index 574f42f..0d007f3 100644
--- a/connect.c
+++ b/connect.c
@@ -599,11 +599,13 @@ struct child_process *git_connect(int fd[2],
const
char *url_orig, conn->argv = arg = xcalloc(6, sizeof(*arg));
if (protocol == PROTO_SSH) {
const char *ssh = getenv("GIT_SSH");
+ int putty = ssh && strstr(ssh, "plink");
if (!ssh) ssh = "ssh";
*arg++ = ssh;
if (port) {
- *arg++ = "-p";
+ /* P is for PuTTY, p is for OpenSSH */
+ *arg++ = putty ? "-P" : "-p";
*arg++ = port;
}
*arg++ = host;
What about installing a wrapper script, plinkssh, that does this:
#!/bin/bash
if test "$1" = -p; then
port="-P $2"
shift; shift
fi
exec plink $port "$@"
and require plink users to set GIT_SSH=plinkssh?