diff options
author | Martin Sivak <mars@nomi.cz> | 2005-08-03 17:15:42 +0200 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-08-09 22:28:20 -0700 |
commit | 4852f7232b7a83fbd1b745520181bd67bf95911b (patch) | |
tree | c7e28f6698417a9bb3df7e3c123354a13ea9de8f /connect.c | |
parent | 763e287a3525ca36fb5b75d91a825833fb11d43a (diff) | |
download | git-4852f7232b7a83fbd1b745520181bd67bf95911b.tar.gz |
Use GIT_SSH environment to specify alternate ssh binary.
[jc: I ended up rewriting Martin's patch due to whitespace
breakage, but the credit goes to Martin for doing the initial
patch to identify what needs to be changed.]
Signed-off-by: Martin Sivak <mars@nomi.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'connect.c')
-rw-r--r-- | connect.c | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -382,8 +382,15 @@ int git_connect(int fd[2], char *url, const char *prog) close(pipefd[0][1]); close(pipefd[1][0]); close(pipefd[1][1]); - if (protocol == PROTO_SSH) - execlp("ssh", "ssh", host, command, NULL); + if (protocol == PROTO_SSH) { + const char *ssh = getenv("GIT_SSH") ? : "ssh"; + const char *ssh_basename = strrchr(ssh, '/'); + if (!ssh_basename) + ssh_basename = ssh; + else + ssh_basename++; + execlp(ssh, ssh_basename, host, command, NULL); + } else execlp("sh", "sh", "-c", command, NULL); die("exec failed"); |