mercurial/hg.py
changeset 1069 4337cd845a2a
parent 1062 6d5a62a549fa
child 1072 05dc7aba22eb
equal deleted inserted replaced
1068:498456c2e8e5 1069:4337cd845a2a
  2155 class sshrepository(remoterepository):
  2155 class sshrepository(remoterepository):
  2156     def __init__(self, ui, path):
  2156     def __init__(self, ui, path):
  2157         self.url = path
  2157         self.url = path
  2158         self.ui = ui
  2158         self.ui = ui
  2159 
  2159 
  2160         m = re.match(r'ssh://(([^@]+)@)?([^:/]+)(:(\d+))?(/(.*))', path)
  2160         m = re.match(r'ssh://(([^@]+)@)?([^:/]+)(:(\d+))?(/(.*))?', path)
  2161         if not m:
  2161         if not m:
  2162             raise RepoError("couldn't parse destination %s" % path)
  2162             raise RepoError("couldn't parse destination %s" % path)
  2163 
  2163 
  2164         self.user = m.group(2)
  2164         self.user = m.group(2)
  2165         self.host = m.group(3)
  2165         self.host = m.group(3)
  2166         self.port = m.group(5)
  2166         self.port = m.group(5)
  2167         self.path = m.group(7)
  2167         self.path = m.group(7) or "."
  2168 
  2168 
  2169         args = self.user and ("%s@%s" % (self.user, self.host)) or self.host
  2169         args = self.user and ("%s@%s" % (self.user, self.host)) or self.host
  2170         args = self.port and ("%s -p %s") % (args, self.port) or args
  2170         args = self.port and ("%s -p %s") % (args, self.port) or args
  2171         path = self.path or ""
       
  2172 
       
  2173         if not path:
       
  2174             raise RepoError("no remote repository path specified")
       
  2175 
  2171 
  2176         sshcmd = self.ui.config("ui", "ssh", "ssh")
  2172         sshcmd = self.ui.config("ui", "ssh", "ssh")
  2177         remotecmd = self.ui.config("ui", "remotecmd", "hg")
  2173         remotecmd = self.ui.config("ui", "remotecmd", "hg")
  2178         cmd = "%s %s '%s -R %s serve --stdio'"
  2174         cmd = "%s %s '%s -R %s serve --stdio'"
  2179         cmd = cmd % (sshcmd, args, remotecmd, path)
  2175         cmd = cmd % (sshcmd, args, remotecmd, self.path)
  2180 
  2176 
  2181         self.pipeo, self.pipei, self.pipee = os.popen3(cmd)
  2177         self.pipeo, self.pipei, self.pipee = os.popen3(cmd)
  2182 
  2178 
  2183     def readerr(self):
  2179     def readerr(self):
  2184         while 1:
  2180         while 1: