[PATCH 09 of 12 V3] bundle2: add a 'modes' dictionary to the bundle operation

Boris Feld boris.feld at octobus.net
Mon Nov 20 11:52:00 EST 2017

# HG changeset patch
# User Boris Feld <boris.feld at octobus.net>
# Date 1508247574 -7200
#      Tue Oct 17 15:39:34 2017 +0200
# Node ID ab0fe3f91e7b9ed7bd508a9affa0b91128facf13
# Parent  1ced6a7918ff64068d36d039e88ba72f0ad0a078
# EXP-Topic b2.bookmarks
# Available At https://bitbucket.org/octobus/mercurial-devel/
#              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r ab0fe3f91e7b
bundle2: add a 'modes' dictionary to the bundle operation

This new attribute allows the codes requesting an unbundling to pass important
information to individual part handlers. The current target use case is to
allow for receiving 'bookmarks' part without directly updating local
repository, but just recording the received data instead. This is necessary
for pull where the remote bookmarks are processed locally. I expect the
concept to be beneficial to other parts in the future.

To clarify the bookmark behavior on pull, the remote bookmark value are not just
taken -as-is- into the local repository. There is an extra step to detect
bookmark divergence. The remote bookmarks data are stored until this processing

diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py
--- a/mercurial/bundle2.py
+++ b/mercurial/bundle2.py
@@ -301,6 +301,8 @@ class bundleoperation(object):
         self.captureoutput = captureoutput
         self.hookargs = {}
         self._gettransaction = transactiongetter
+        # carries value that can modify part behavior
+        self.modes = {}
     def gettransaction(self):
         transaction = self._gettransaction()

More information about the Mercurial-devel mailing list