comparison mercurial/sshrepo.py @ 7637:1d54e2f6c0b7

error: move repo errors rename NoCapability to CapabilityError
author Matt Mackall <mpm@selenic.com>
date Mon, 12 Jan 2009 10:42:31 -0600
parents 4dd7b28003d2
children d2f753830f80
comparison
equal deleted inserted replaced
7636:e3f8c6d6b72e 7637:1d54e2f6c0b7
5 # This software may be used and distributed according to the terms 5 # This software may be used and distributed according to the terms
6 # of the GNU General Public License, incorporated herein by reference. 6 # of the GNU General Public License, incorporated herein by reference.
7 7
8 from node import bin, hex 8 from node import bin, hex
9 from i18n import _ 9 from i18n import _
10 import repo, os, re, util 10 import repo, os, re, util, error
11 11
12 class remotelock(object): 12 class remotelock(object):
13 def __init__(self, repo): 13 def __init__(self, repo):
14 self.repo = repo 14 self.repo = repo
15 def release(self): 15 def release(self):
24 self._url = path 24 self._url = path
25 self.ui = ui 25 self.ui = ui
26 26
27 m = re.match(r'^ssh://(([^@]+)@)?([^:/]+)(:(\d+))?(/(.*))?$', path) 27 m = re.match(r'^ssh://(([^@]+)@)?([^:/]+)(:(\d+))?(/(.*))?$', path)
28 if not m: 28 if not m:
29 self.raise_(repo.RepoError(_("couldn't parse location %s") % path)) 29 self.raise_(error.RepoError(_("couldn't parse location %s") % path))
30 30
31 self.user = m.group(2) 31 self.user = m.group(2)
32 self.host = m.group(3) 32 self.host = m.group(3)
33 self.port = m.group(5) 33 self.port = m.group(5)
34 self.path = m.group(7) or "." 34 self.path = m.group(7) or "."
43 cmd = cmd % (sshcmd, args, remotecmd, self.path) 43 cmd = cmd % (sshcmd, args, remotecmd, self.path)
44 44
45 ui.note(_('running %s\n') % cmd) 45 ui.note(_('running %s\n') % cmd)
46 res = util.system(cmd) 46 res = util.system(cmd)
47 if res != 0: 47 if res != 0:
48 self.raise_(repo.RepoError(_("could not create remote repo"))) 48 self.raise_(error.RepoError(_("could not create remote repo")))
49 49
50 self.validate_repo(ui, sshcmd, args, remotecmd) 50 self.validate_repo(ui, sshcmd, args, remotecmd)
51 51
52 def url(self): 52 def url(self):
53 return self._url 53 return self._url
76 if l: 76 if l:
77 ui.debug(_("remote: "), l) 77 ui.debug(_("remote: "), l)
78 lines.append(l) 78 lines.append(l)
79 max_noise -= 1 79 max_noise -= 1
80 else: 80 else:
81 self.raise_(repo.RepoError(_("no suitable response from remote hg"))) 81 self.raise_(error.RepoError(_("no suitable response from remote hg")))
82 82
83 self.capabilities = util.set() 83 self.capabilities = util.set()
84 lines.reverse() 84 lines.reverse()
85 for l in lines: 85 for l in lines:
86 if l.startswith("capabilities:"): 86 if l.startswith("capabilities:"):
155 d = self.call("lookup", key=key) 155 d = self.call("lookup", key=key)
156 success, data = d[:-1].split(" ", 1) 156 success, data = d[:-1].split(" ", 1)
157 if int(success): 157 if int(success):
158 return bin(data) 158 return bin(data)
159 else: 159 else:
160 self.raise_(repo.RepoError(data)) 160 self.raise_(error.RepoError(data))
161 161
162 def heads(self): 162 def heads(self):
163 d = self.call("heads") 163 d = self.call("heads")
164 try: 164 try:
165 return map(bin, d[:-1].split(" ")) 165 return map(bin, d[:-1].split(" "))
196 196
197 def unbundle(self, cg, heads, source): 197 def unbundle(self, cg, heads, source):
198 d = self.call("unbundle", heads=' '.join(map(hex, heads))) 198 d = self.call("unbundle", heads=' '.join(map(hex, heads)))
199 if d: 199 if d:
200 # remote may send "unsynced changes" 200 # remote may send "unsynced changes"
201 self.raise_(repo.RepoError(_("push refused: %s") % d)) 201 self.raise_(error.RepoError(_("push refused: %s") % d))
202 202
203 while 1: 203 while 1:
204 d = cg.read(4096) 204 d = cg.read(4096)
205 if not d: 205 if not d:
206 break 206 break
209 self._send("", flush=True) 209 self._send("", flush=True)
210 210
211 r = self._recv() 211 r = self._recv()
212 if r: 212 if r:
213 # remote may send "unsynced changes" 213 # remote may send "unsynced changes"
214 self.raise_(repo.RepoError(_("push failed: %s") % r)) 214 self.raise_(error.RepoError(_("push failed: %s") % r))
215 215
216 r = self._recv() 216 r = self._recv()
217 try: 217 try:
218 return int(r) 218 return int(r)
219 except: 219 except:
220 self.raise_(util.UnexpectedOutput(_("unexpected response:"), r)) 220 self.raise_(util.UnexpectedOutput(_("unexpected response:"), r))
221 221
222 def addchangegroup(self, cg, source, url): 222 def addchangegroup(self, cg, source, url):
223 d = self.call("addchangegroup") 223 d = self.call("addchangegroup")
224 if d: 224 if d:
225 self.raise_(repo.RepoError(_("push refused: %s") % d)) 225 self.raise_(error.RepoError(_("push refused: %s") % d))
226 while 1: 226 while 1:
227 d = cg.read(4096) 227 d = cg.read(4096)
228 if not d: 228 if not d:
229 break 229 break
230 self.pipeo.write(d) 230 self.pipeo.write(d)