git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: How can I specify a non-standard TCP port for a git+ssh connection?
@ 2005-12-02 19:31 linux
  2005-12-03  8:06 ` Andreas Jochens
  0 siblings, 1 reply; 6+ messages in thread
From: linux @ 2005-12-02 19:31 UTC (permalink / raw)
  To: aj, git, torvalds

Actually, you don't need any git support.  ssh allows you to set up
"virtual hosts" with any combination of options you like.

Host <virtual>
        HostName <physical>
	Port <nonstandard>
        User <whoever>
        IdentityFile    <custom>
        ForwardAgent    no

So typing "ssh <virtual>" will have the effect of
ssh <whoever>@<physical> -p <nonstandard> -i <custom> -a

Quite often, you let <virtual> == <physical>, so it's "custom settings
for talking to this host", but you can have multiple different virtual
names that all map to the same physical host.

But the point is that as long as you can pass a hostname through to ssh,
you can carry as many custom settings as you like with it.

^ permalink raw reply	[flat|nested] 6+ messages in thread
* How can I specify a non-standard TCP port for a git+ssh connection?
@ 2005-12-02 12:48 Andreas Jochens
  2005-12-02 16:07 ` Linus Torvalds
  0 siblings, 1 reply; 6+ messages in thread
From: Andreas Jochens @ 2005-12-02 12:48 UTC (permalink / raw)
  To: git

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);

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2005-12-03 21:43 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-12-02 19:31 How can I specify a non-standard TCP port for a git+ssh connection? linux
2005-12-03  8:06 ` Andreas Jochens
2005-12-03 19:09   ` Junio C Hamano
2005-12-03 21:43     ` Andreas Jochens
  -- strict thread matches above, loose matches on Subject: below --
2005-12-02 12:48 Andreas Jochens
2005-12-02 16:07 ` Linus Torvalds

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).