comparison mercurial/sshrepo.py @ 7642:84346894def8

sshrepo: change raise_ to abort
author Matt Mackall <mpm@selenic.com>
date Mon, 12 Jan 2009 11:28:30 -0600
parents d2f753830f80
children 4a4c7f6a5912
comparison
equal deleted inserted replaced
7641:d2f753830f80 7642:84346894def8
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_(error.RepoError(_("couldn't parse location %s") % path)) 29 self.abort(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_(error.RepoError(_("could not create remote repo"))) 48 self.abort(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_(error.RepoError(_("no suitable response from remote hg"))) 81 self.abort(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:"):
93 if size == 0: break 93 if size == 0: break
94 l = self.pipee.readline() 94 l = self.pipee.readline()
95 if not l: break 95 if not l: break
96 self.ui.status(_("remote: "), l) 96 self.ui.status(_("remote: "), l)
97 97
98 def raise_(self, exception): 98 def abort(self, exception):
99 self.cleanup() 99 self.cleanup()
100 raise exception 100 raise exception
101 101
102 def cleanup(self): 102 def cleanup(self):
103 try: 103 try:
130 l = self.pipei.readline() 130 l = self.pipei.readline()
131 self.readerr() 131 self.readerr()
132 try: 132 try:
133 l = int(l) 133 l = int(l)
134 except: 134 except:
135 self.raise_(error.ResponseError(_("unexpected response:"), l)) 135 self.abort(error.ResponseError(_("unexpected response:"), l))
136 return self.pipei.read(l) 136 return self.pipei.read(l)
137 137
138 def _send(self, data, flush=False): 138 def _send(self, data, flush=False):
139 self.pipeo.write("%d\n" % len(data)) 139 self.pipeo.write("%d\n" % len(data))
140 if data: 140 if data:
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_(error.RepoError(data)) 160 self.abort(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(" "))
166 except: 166 except:
167 self.raise_(error.ResponseError(_("unexpected response:"), d)) 167 self.abort(error.ResponseError(_("unexpected response:"), d))
168 168
169 def branches(self, nodes): 169 def branches(self, nodes):
170 n = " ".join(map(hex, nodes)) 170 n = " ".join(map(hex, nodes))
171 d = self.call("branches", nodes=n) 171 d = self.call("branches", nodes=n)
172 try: 172 try:
173 br = [ tuple(map(bin, b.split(" "))) for b in d.splitlines() ] 173 br = [ tuple(map(bin, b.split(" "))) for b in d.splitlines() ]
174 return br 174 return br
175 except: 175 except:
176 self.raise_(error.ResponseError(_("unexpected response:"), d)) 176 self.abort(error.ResponseError(_("unexpected response:"), d))
177 177
178 def between(self, pairs): 178 def between(self, pairs):
179 n = " ".join(["-".join(map(hex, p)) for p in pairs]) 179 n = " ".join(["-".join(map(hex, p)) for p in pairs])
180 d = self.call("between", pairs=n) 180 d = self.call("between", pairs=n)
181 try: 181 try:
182 p = [ l and map(bin, l.split(" ")) or [] for l in d.splitlines() ] 182 p = [ l and map(bin, l.split(" ")) or [] for l in d.splitlines() ]
183 return p 183 return p
184 except: 184 except:
185 self.raise_(error.ResponseError(_("unexpected response:"), d)) 185 self.abort(error.ResponseError(_("unexpected response:"), d))
186 186
187 def changegroup(self, nodes, kind): 187 def changegroup(self, nodes, kind):
188 n = " ".join(map(hex, nodes)) 188 n = " ".join(map(hex, nodes))
189 return self.do_cmd("changegroup", roots=n) 189 return self.do_cmd("changegroup", roots=n)
190 190
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_(error.RepoError(_("push refused: %s") % d)) 201 self.abort(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_(error.RepoError(_("push failed: %s") % r)) 214 self.abort(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_(error.ResponseError(_("unexpected response:"), r)) 220 self.abort(error.ResponseError(_("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_(error.RepoError(_("push refused: %s") % d)) 225 self.abort(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)
237 if not r: 237 if not r:
238 return 1 238 return 1
239 try: 239 try:
240 return int(r) 240 return int(r)
241 except: 241 except:
242 self.raise_(error.ResponseError(_("unexpected response:"), r)) 242 self.abort(error.ResponseError(_("unexpected response:"), r))
243 243
244 def stream_out(self): 244 def stream_out(self):
245 return self.do_cmd('stream_out') 245 return self.do_cmd('stream_out')
246 246
247 instance = sshrepository 247 instance = sshrepository