# HG changeset patch # User Boris Feld <boris.f...@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() _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel