} else {
host = url;
path = strchr(host, ':');
+ if (path)
+ *(path++) = '\0';
}
if (!path) {
return error("Bad URL: %s", url);
}
- *(path++) = '\0';
- /* ssh <host> 'cd /<path>; stdio-pull <arg...> <commit-id>' */
+ /* ssh <host> 'cd <path>; stdio-pull <arg...> <commit-id>' */
snprintf(command, COMMAND_SIZE,
- "%s='/%s' %s",
+ "%s='%s' %s",
GIT_DIR_ENVIRONMENT, path, remote_prog);
+ *path = '\0';
posn = command + strlen(command);
for (i = 0; i < rmt_argc; i++) {
*(posn++) = ' ';
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];