[PATCH 2 of 2] push-discovery: extract the bookmark comparison logic in its own function
Boris Feld
boris.feld at octobus.net
Tue Mar 13 12:49:18 EDT 2018
# HG changeset patch
# User Boris Feld <boris.feld at octobus.net>
# Date 1520607221 -3600
# Fri Mar 09 15:53:41 2018 +0100
# Node ID 5b15c9c72bc88931d5a5dc9bfec0935098c04402
# Parent 9ecb102cd955e075a6a637f1b8d4f5c8e3015751
# EXP-Topic push-book-handling
# Available At https://bitbucket.org/octobus/mercurial-devel/
# hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 5b15c9c72bc8
push-discovery: extract the bookmark comparison logic in its own function
This will help extensions to alter the behavior as they see fit.
diff --git a/mercurial/exchange.py b/mercurial/exchange.py
--- a/mercurial/exchange.py
+++ b/mercurial/exchange.py
@@ -624,12 +624,20 @@ def _pushdiscoverybookmarks(pushop):
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 extension 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 +663,8 @@ def _pushdiscoverybookmarks(pushop):
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()
More information about the Mercurial-devel
mailing list