Re: [PATCH 06/12] connect: Fix custom ports with plink (Putty's ssh)
- From
Steffen Prohaska <prohaska@zib.de>
- Date
- Jul 4, 2008, 08:50 UTC
- Message-ID
- <579FEE2E-CAED-412D-B4F2-AAEA303A3DAC@zib.de>
- In-Reply-To
- <alpine.DEB.1.00.0807031209440.9925@racer>
On Jul 3, 2008, at 1:10 PM, Johannes Schindelin wrote:
Show 49 quoted lines
> On Wed, 2 Jul 2008, Johannes Sixt wrote:
>
>> On Mittwoch, 2. Juli 2008, Steffen Prohaska wrote:
>>> From: Edward Z. Yang <edwardzyang@thewritingpot.com>
>>>
>>> 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@thewritingpot.com>
>>> Signed-off-by: Steffen Prohaska <prohaska@zib.de>
>>> ---
>>> 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?
>
> I like that better than this special-casing of plink.I'd prefer to change connect.c. plinkssh would introduce another dependency on the shell, while our overall goal is to avoid shell as much as possible on Windows, no? Edward's solution also looks more obvious to me than the plinkssh wrapper script.
Steffen