win32: fix ssh://host:port when using Plink
authorSteve Borho <steve@borho.org>
Wed, 12 Dec 2007 16:44:26 -0600
changeset 5644 e2e8e977a6cb
parent 5641 4d6b630d3939
child 5645 1f044b04fa0a
win32: fix ssh://host:port when using Plink Moves ssh argument building to platform specific utils code. The win32 version looks for plink in ssh command string and uses '-P' in lieu of '-p' for specifying a port
mercurial/sshrepo.py
mercurial/util.py
--- a/mercurial/sshrepo.py	Mon Dec 10 22:41:18 2007 +0100
+++ b/mercurial/sshrepo.py	Wed Dec 12 16:44:26 2007 -0600
@@ -24,12 +24,11 @@
         self.port = m.group(5)
         self.path = m.group(7) or "."
 
-        args = self.user and ("%s@%s" % (self.user, self.host)) or self.host
-        args = self.port and ("%s -p %s") % (args, self.port) or args
-
         sshcmd = self.ui.config("ui", "ssh", "ssh")
         remotecmd = self.ui.config("ui", "remotecmd", "hg")
 
+        args = util.sshargs(sshcmd, self.host, self.user, self.port)
+
         if create:
             cmd = '%s %s "%s init %s"'
             cmd = cmd % (sshcmd, args, remotecmd, self.path)
--- a/mercurial/util.py	Mon Dec 10 22:41:18 2007 +0100
+++ b/mercurial/util.py	Wed Dec 12 16:44:26 2007 -0600
@@ -960,6 +960,12 @@
             pf = pf[1:-1] # Remove the quotes
         return pf
 
+    def sshargs(sshcmd, host, user, port):
+        '''Build argument list for ssh or Plink'''
+        pflag = 'plink' in sshcmd.lower() and '-P' or '-p'
+        args = user and ("%s@%s" % (user, host)) or host
+        return port and ("%s %s %s") % (args, pflag, port) or args
+
     def testpid(pid):
         '''return False if pid dead, True if running or not known'''
         return True
@@ -1102,6 +1108,11 @@
                 pf = pf[1:-1] # Remove the quotes
         return pf
 
+    def sshargs(sshcmd, host, user, port):
+        '''Build argument list for ssh'''
+        args = user and ("%s@%s" % (user, host)) or host
+        return port and ("%s -p %s") % (args, port) or args
+
     def is_exec(f):
         """check whether a file is executable"""
         return (os.lstat(f).st_mode & 0100 != 0)