Hello,
is there a simple way to specify a non-standard TCP port for a git+ssh connection?
The following small patch would allow to use an URL like 'git+ssh://user@hostname:port/path' to specify an arbitrary port for the ssh connection.
Regards Andreas Jochens
connect.c | 12 ++++++++++-- 1 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/connect.c b/connect.c index 93f6f80..4b640dd 100644 --- a/connect.c +++ b/connect.c @@ -560,7 +560,7 @@ static int git_proxy_connect(int fd[2], int git_connect(int fd[2], char *url, const char *prog) { char command[1024]; - char *host, *path = url; + char *host, *port = NULL, *path = url; char *colon = NULL; int pipefd[2][2]; pid_t pid; @@ -597,6 +597,10 @@ int git_connect(int fd[2], char *url, co path = strdup(ptr); *ptr = '\0'; + if ((colon = strchr(host, ':'))) { + *colon = '\0'; + port = colon + 1; + } } if (protocol == PROTO_GIT) { @@ -626,7 +630,11 @@ int git_connect(int fd[2], char *url, co ssh_basename = ssh; else ssh_basename++; - execlp(ssh, ssh_basename, host, command, NULL); + if (port) + execlp(ssh, ssh_basename, "-p", port, host, + command, NULL); + else + execlp(ssh, ssh_basename, host, command, NULL); } else execlp("sh", "sh", "-c", command, NULL);