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>
This commit is contained in:
parent
763e287a35
commit
4852f7232b
11
connect.c
11
connect.c
@ -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");
|
||||
|
8
rsh.c
8
rsh.c
@ -56,10 +56,16 @@ int setup_connection(int *fd_in, int *fd_out, const char *remote_prog,
|
||||
return error("Couldn't create socket");
|
||||
}
|
||||
if (!fork()) {
|
||||
const char *ssh = getenv("GIT_SSH") ? : "ssh";
|
||||
const char *ssh_basename = strrchr(ssh, '/');
|
||||
if (!ssh_basename)
|
||||
ssh_basename = ssh;
|
||||
else
|
||||
ssh_basename++;
|
||||
close(sv[1]);
|
||||
dup2(sv[0], 0);
|
||||
dup2(sv[0], 1);
|
||||
execlp("ssh", "ssh", host, command, NULL);
|
||||
execlp(ssh, ssh_basename, host, command, NULL);
|
||||
}
|
||||
close(sv[0]);
|
||||
*fd_in = sv[1];
|
||||
|
Loading…
Reference in New Issue
Block a user