mercurial/sshrepo.py
changeset 11592 26e0782b8380
parent 11591 0d9cb3f3b0a1
child 11596 47ca289a3a08
equal deleted inserted replaced
11591:0d9cb3f3b0a1 11592:26e0782b8380
   126 
   126 
   127     def _call(self, cmd, **args):
   127     def _call(self, cmd, **args):
   128         self._callstream(cmd, **args)
   128         self._callstream(cmd, **args)
   129         return self._recv()
   129         return self._recv()
   130 
   130 
       
   131     def _callpush(self, cmd, fp, **args):
       
   132         r = self._call(cmd, **args)
       
   133         if r:
       
   134             return '', r
       
   135         while 1:
       
   136             d = fp.read(4096)
       
   137             if not d:
       
   138                 break
       
   139             self._send(d)
       
   140         self._send("", flush=True)
       
   141         r = self._recv()
       
   142         if r:
       
   143             return '', r
       
   144         return self._recv(), ''
       
   145 
   131     def _decompress(self, stream):
   146     def _decompress(self, stream):
   132         return stream
   147         return stream
   133 
   148 
   134     def _recv(self):
   149     def _recv(self):
   135         l = self.pipei.readline()
   150         l = self.pipei.readline()
   153         return remotelock(self)
   168         return remotelock(self)
   154 
   169 
   155     def unlock(self):
   170     def unlock(self):
   156         self._call("unlock")
   171         self._call("unlock")
   157 
   172 
   158     def unbundle(self, cg, heads, source):
       
   159         '''Send cg (a readable file-like object representing the
       
   160         changegroup to push, typically a chunkbuffer object) to the
       
   161         remote server as a bundle. Return an integer indicating the
       
   162         result of the push (see localrepository.addchangegroup()).'''
       
   163         d = self._call("unbundle", heads=' '.join(map(hex, heads)))
       
   164         if d:
       
   165             # remote may send "unsynced changes"
       
   166             self._abort(error.RepoError(_("push refused: %s") % d))
       
   167 
       
   168         while 1:
       
   169             d = cg.read(4096)
       
   170             if not d:
       
   171                 break
       
   172             self._send(d)
       
   173 
       
   174         self._send("", flush=True)
       
   175 
       
   176         r = self._recv()
       
   177         if r:
       
   178             # remote may send "unsynced changes"
       
   179             self._abort(error.RepoError(_("push failed: %s") % r))
       
   180 
       
   181         r = self._recv()
       
   182         try:
       
   183             return int(r)
       
   184         except:
       
   185             self._abort(error.ResponseError(_("unexpected response:"), r))
       
   186 
       
   187     def addchangegroup(self, cg, source, url):
   173     def addchangegroup(self, cg, source, url):
   188         '''Send a changegroup to the remote server.  Return an integer
   174         '''Send a changegroup to the remote server.  Return an integer
   189         similar to unbundle(). DEPRECATED, since it requires locking the
   175         similar to unbundle(). DEPRECATED, since it requires locking the
   190         remote.'''
   176         remote.'''
   191         d = self._call("addchangegroup")
   177         d = self._call("addchangegroup")