# HG changeset patch # User Boris Feld # Date 1520607221 -3600 # Node ID 8fd9b56e8d7c0923f661bd7d5bd5ad52b9fe0e94 # Parent cc51b6a07869876e6ad2e1aa0337e2e4b4da4f9e push-discovery: extract the bookmark comparison logic in its own function This will help extensions to alter the behavior as they see fit. diff -r cc51b6a07869 -r 8fd9b56e8d7c 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()