Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/sshrepo.py @ 6001:30d2fecaab76
merge with crew-stable
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Sun, 03 Feb 2008 21:47:07 -0200 |
parents | 87e6b4f4871b 7939c71f3132 |
children | f89fd07fc51d |
comparison
equal
deleted
inserted
replaced
6000:8e7d64989bb8 | 6001:30d2fecaab76 |
---|---|
112 self.pipeo.flush() | 112 self.pipeo.flush() |
113 | 113 |
114 return self.pipei | 114 return self.pipei |
115 | 115 |
116 def call(self, cmd, **args): | 116 def call(self, cmd, **args): |
117 r = self.do_cmd(cmd, **args) | 117 self.do_cmd(cmd, **args) |
118 l = r.readline() | 118 return self._recv() |
119 | |
120 def _recv(self): | |
121 l = self.pipei.readline() | |
119 self.readerr() | 122 self.readerr() |
120 try: | 123 try: |
121 l = int(l) | 124 l = int(l) |
122 except: | 125 except: |
123 self.raise_(util.UnexpectedOutput(_("unexpected response:"), l)) | 126 self.raise_(util.UnexpectedOutput(_("unexpected response:"), l)) |
124 return r.read(l) | 127 return self.pipei.read(l) |
128 | |
129 def _send(self, data, flush=False): | |
130 self.pipeo.write("%d\n" % len(data)) | |
131 if data: | |
132 self.pipeo.write(data) | |
133 if flush: | |
134 self.pipeo.flush() | |
135 self.readerr() | |
125 | 136 |
126 def lock(self): | 137 def lock(self): |
127 self.call("lock") | 138 self.call("lock") |
128 return remotelock(self) | 139 return remotelock(self) |
129 | 140 |
180 # remote may send "unsynced changes" | 191 # remote may send "unsynced changes" |
181 self.raise_(repo.RepoError(_("push refused: %s") % d)) | 192 self.raise_(repo.RepoError(_("push refused: %s") % d)) |
182 | 193 |
183 while 1: | 194 while 1: |
184 d = cg.read(4096) | 195 d = cg.read(4096) |
185 if not d: break | 196 if not d: |
186 self.pipeo.write(str(len(d)) + '\n') | 197 break |
187 self.pipeo.write(d) | 198 self._send(d) |
188 self.readerr() | 199 |
189 | 200 self._send("", flush=True) |
190 self.pipeo.write('0\n') | 201 |
191 self.pipeo.flush() | 202 r = self._recv() |
192 | |
193 self.readerr() | |
194 l = int(self.pipei.readline()) | |
195 r = self.pipei.read(l) | |
196 if r: | 203 if r: |
197 # remote may send "unsynced changes" | 204 # remote may send "unsynced changes" |
198 self.raise_(repo.RepoError(_("push failed: %s") % r)) | 205 self.raise_(repo.RepoError(_("push failed: %s") % r)) |
199 | 206 |
200 self.readerr() | 207 r = self._recv() |
201 l = int(self.pipei.readline()) | 208 try: |
202 r = self.pipei.read(l) | 209 return int(r) |
203 return int(r) | 210 except: |
211 self.raise_(util.UnexpectedOutput(_("unexpected response:"), r)) | |
204 | 212 |
205 def addchangegroup(self, cg, source, url): | 213 def addchangegroup(self, cg, source, url): |
206 d = self.call("addchangegroup") | 214 d = self.call("addchangegroup") |
207 if d: | 215 if d: |
208 self.raise_(repo.RepoError(_("push refused: %s") % d)) | 216 self.raise_(repo.RepoError(_("push refused: %s") % d)) |
209 while 1: | 217 while 1: |
210 d = cg.read(4096) | 218 d = cg.read(4096) |
211 if not d: break | 219 if not d: |
220 break | |
212 self.pipeo.write(d) | 221 self.pipeo.write(d) |
213 self.readerr() | 222 self.readerr() |
214 | 223 |
215 self.pipeo.flush() | 224 self.pipeo.flush() |
216 | 225 |
217 self.readerr() | 226 self.readerr() |
218 l = int(self.pipei.readline()) | 227 r = self._recv() |
219 r = self.pipei.read(l) | |
220 if not r: | 228 if not r: |
221 return 1 | 229 return 1 |
222 return int(r) | 230 try: |
231 return int(r) | |
232 except: | |
233 self.raise_(util.UnexpectedOutput(_("unexpected response:"), r)) | |
223 | 234 |
224 def stream_out(self): | 235 def stream_out(self): |
225 return self.do_cmd('stream_out') | 236 return self.do_cmd('stream_out') |
226 | 237 |
227 instance = sshrepository | 238 instance = sshrepository |