push-discovery: extract the bookmark comparison logic in its own function
authorBoris Feld <boris.feld@octobus.net>
Fri, 09 Mar 2018 15:53:41 +0100
changeset 36938 8fd9b56e8d7c
parent 36937 cc51b6a07869
child 36939 45bfcd16f27e
push-discovery: extract the bookmark comparison logic in its own function This will help extensions to alter the behavior as they see fit.
mercurial/exchange.py
--- a/mercurial/exchange.py	Fri Mar 09 16:31:35 2018 +0100
+++ b/mercurial/exchange.py	Fri Mar 09 15:53:41 2018 +0100
@@ -624,12 +624,21 @@
                 for (b, scid, dcid) in bookmarks]
 
     comp = [hexifycompbookmarks(marks) for marks in comp]
+    return _processcompared(pushop, ancestors, explicit, remotebookmark, comp)
+
+def _processcompared(pushop, pushed, explicit, remotebms, comp):
+    """take decision on bookmark to pull from the remote bookmark
+
+    Exist to help extensions who want to alter this behavior.
+    """
     addsrc, adddst, advsrc, advdst, diverge, differ, invalid, same = comp
 
+    repo = pushop.repo
+
     for b, scid, dcid in advsrc:
         if b in explicit:
             explicit.remove(b)
-        if not ancestors or repo[scid].rev() in ancestors:
+        if not pushed or repo[scid].rev() in pushed:
             pushop.outbookmarks.append((b, dcid, scid))
     # search added bookmark
     for b, scid, dcid in addsrc:
@@ -655,8 +664,8 @@
     if explicit:
         explicit = sorted(explicit)
         # we should probably list all of them
-        ui.warn(_('bookmark %s does not exist on the local '
-                  'or remote repository!\n') % explicit[0])
+        pushop.ui.warn(_('bookmark %s does not exist on the local '
+                         'or remote repository!\n') % explicit[0])
         pushop.bkresult = 2
 
     pushop.outbookmarks.sort()