mercurial/localrepo.py
changeset 21071 19b9f23a8c6f
parent 21070 408877d491fb
child 21106 53433d8f1faa
--- a/mercurial/localrepo.py	Tue Apr 15 16:42:52 2014 -0400
+++ b/mercurial/localrepo.py	Tue Apr 15 16:49:30 2014 -0400
@@ -124,7 +124,14 @@
         This function handles the repo locking itself."""
         try:
             cg = exchange.readbundle(self.ui, cg, None)
-            return exchange.unbundle(self._repo, cg, heads, 'push', url)
+            ret = exchange.unbundle(self._repo, cg, heads, 'push', url)
+            if util.safehasattr(ret, 'getchunks'):
+                # This is a bundle20 object, turn it into an unbundler.
+                # This little dance should be dropped eventually when the API
+                # is finally improved.
+                stream = util.chunkbuffer(ret.getchunks())
+                ret = bundle2.unbundle20(self.ui, stream)
+            return ret
         except exchange.PushRaced, exc:
             raise error.ResponseError(_('push failed:'), exc.message)