This patch make possible to use alternate ssh binary or ssh helper
script. The script can be used to give additional parameters to ssh
binary (like private key, protocol version, ...).

Example script could look like this:

#!/bin/sh
ssh -1 -i myprivatekey.key "$@"

The patch itself is realy very simple:

diff -uNr git-current/connect.c [EMAIL PROTECTED]/connect.c
--- git-current/connect.c  2005-08-03 15:00:04.000000000 +0200
+++ [EMAIL PROTECTED]/connect.c 2005-08-03 16:32:36.000000000 +0200
@@ -166,6 +166,9 @@
   int pipefd[2][2];
   pid_t pid;
   enum protocol protocol;
+  char *sshprog;
+
+  sshprog = getenv("GIT_SSH") ? : "ssh";

   host = NULL;
   path = url;
@@ -205,7 +208,7 @@
      close(pipefd[1][0]);
      close(pipefd[1][1]);
      if (protocol == PROTO_SSH)
-        execlp("ssh", "ssh", host, command, NULL);
+        execlp(sshprog, "ssh", host, command, NULL);
      else
         execlp("sh", "sh", "-c", command, NULL);
      die("exec failed");
diff -uNr git-current/rsh.c [EMAIL PROTECTED]/rsh.c
--- git-current/rsh.c   2005-08-03 15:00:04.000000000 +0200
+++ [EMAIL PROTECTED]/rsh.c  2005-08-03 16:26:39.000000000 +0200
@@ -17,6 +17,7 @@
   char command[COMMAND_SIZE];
   char *posn;
   int i;
+  char *prog; 

   if (!strcmp(url, "-")) {
      *fd_in = 0;
@@ -24,6 +25,8 @@
      return 0;
   }

+  prog = getenv("GIT_SSH") ? : "ssh";
+  
   host = strstr(url, "//");
   if (host) {
      host += 2;
@@ -59,7 +62,7 @@
      close(sv[1]);
      dup2(sv[0], 0);
      dup2(sv[0], 1);
-     execlp("ssh", "ssh", host, command, NULL);
+     execlp(prog, "ssh", host, command, NULL);
   }
   close(sv[0]);
   *fd_in = sv[1];


Signed-off-by: Martin Sivak <[EMAIL PROTECTED]>

-- 
Martin Sivak
[EMAIL PROTECTED]

Attachment: pgpsRDHAP3M9v.pgp
Description: PGP signature

Reply via email to