Patchwork [4,of,4,STABLE] exchange: accept phases part in unbundle response

login
register
mail settings
Submitter Martin von Zweigbergk
Date Aug. 3, 2015, 4:37 p.m.
Message ID <70471ff28775f016ec4f.1438619865@waste.org>
Download mbox | patch
Permalink /patch/10088/
State Rejected
Headers show

Comments

Martin von Zweigbergk - Aug. 3, 2015, 4:37 p.m.
# HG changeset patch
# User Martin von Zweigbergk <martinvonz@google.com>
# Date 1437422167 25200
#      Mon Jul 20 12:56:07 2015 -0700
# Branch stable
# Node ID 70471ff28775f016ec4fc1a0ef299c03c3e6101c
# Parent  0a97524ab5dfa8f6a2ca022f74ba65895a04d9bf
exchange: accept phases part in unbundle response

Patch

diff --git a/mercurial/exchange.py b/mercurial/exchange.py
--- a/mercurial/exchange.py
+++ b/mercurial/exchange.py
@@ -111,6 +111,8 @@ 
         self.outdatedphases = None
         # phases changes that must be pushed if changeset push fails
         self.fallbackoutdatedphases = None
+        # phases returned from server in bundle2 response
+        self.remotephases = None
         # outgoing obsmarkers
         self.outobsmarkers = set()
         # outgoing bookmarks
@@ -664,6 +666,9 @@ 
         pushop.pkfailcb[partid](pushop, exc)
     for rephand in replyhandlers:
         rephand(op)
+    for namespace, value in op.records['listkeys']:
+        if namespace == 'phases':
+            pushop.remotephases = value
 
 def _pushchangeset(pushop):
     """Make the actual push of changeset bundle to remote repo"""
@@ -718,7 +723,11 @@ 
     """synchronise phase information locally and remotely"""
     cheads = pushop.commonheads
     # even when we don't push, exchanging phase data is useful
-    remotephases = pushop.remote.listkeys('phases')
+    if pushop.remotephases is not None:
+         # phase data received in bundle2 part reply
+        remotephases = pushop.remotephases
+    else:
+        remotephases = pushop.remote.listkeys('phases')
     if (pushop.ui.configbool('ui', '_usedassubrepo', False)
         and remotephases    # server supports phases
         and pushop.cgresult is None # nothing was pushed