On Mittwoch, 2. Juli 2008, Steffen Prohaska wrote:
> From: Edward Z. Yang <[EMAIL PROTECTED]>
>
> PuTTY requires -P while OpenSSH requires -p; if plink is detected
> as GIT_SSH, use the alternate flag.
>
> Signed-off-by: Edward Z. Yang <[EMAIL PROTECTED]>
> Signed-off-by: Steffen Prohaska <[EMAIL PROTECTED]>
> ---
> 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?
-- Hannes