Mercurial > hg
changeset 5190:6d5ed61c508c
Fix sshrepo.unbundle
We weren't reading all the data sent by the server. Depending on
the system, the remote hg (actually, the remote python) could send a
"close failed: [Errno 32] Broken pipe", making some tests fail.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Fri, 17 Aug 2007 22:43:38 -0300 |
parents | 1843098e665a |
children | 86e95b93559a 0f6a1bdf89fb |
files | mercurial/sshrepo.py |
diffstat | 1 files changed, 8 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/sshrepo.py Fri Aug 17 22:43:38 2007 -0300 +++ b/mercurial/sshrepo.py Fri Aug 17 22:43:38 2007 -0300 @@ -175,6 +175,7 @@ def unbundle(self, cg, heads, source): d = self.call("unbundle", heads=' '.join(map(hex, heads))) if d: + # remote may send "unsynced changes" self.raise_(hg.RepoError(_("push refused: %s") % d)) while 1: @@ -188,14 +189,15 @@ self.pipeo.flush() self.readerr() - d = self.pipei.readline() - if d != '\n': - return 1 - l = int(self.pipei.readline()) r = self.pipei.read(l) - if not r: - return 1 + if r: + # remote may send "unsynced changes" + self.raise_(hg.RepoError(_("push failed: %s") % r)) + + self.readerr() + l = int(self.pipei.readline()) + r = self.pipei.read(l) return int(r) def addchangegroup(self, cg, source, url):