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

Reply via email to