[PATCH 06 of 15] bookmark: introduce a 'bookmarks' part

Boris Feld boris.feld at octobus.net
Wed Oct 18 12:09:58 EDT 2017


# HG changeset patch
# User Boris Feld <boris.feld at octobus.net>
# Date 1508083331 -7200
#      Sun Oct 15 18:02:11 2017 +0200
# Node ID bae0e372cabd32b56d7bc4056e14e64b16696b2a
# Parent  e7a216a89419d30d3222d72a0e2b28ed498f358f
# EXP-Topic b2.bookmarks
# Available At https://bitbucket.org/octobus/mercurial-devel/
#              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r bae0e372cabd
bookmark: introduce a 'bookmarks' part

This part can carry and apply bookmarks information. We start with adding the
core behavior of the part. In its current form, the part is only suitable for
push since it plain update the bookmark without consideration for the local
state. Support of the behavior needed for pulling will be added in later
changesets.

diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py
--- a/mercurial/bundle2.py
+++ b/mercurial/bundle2.py
@@ -1891,6 +1891,21 @@
                 kwargs[key] = inpart.params[key]
         raise error.PushkeyFailed(partid=str(inpart.id), **kwargs)
 
+ at parthandler('bookmarks')
+def handlebookmark(op, inpart):
+    """transmit bookmark information
+
+    The part contains binary encoded bookmark information. The bookmark
+    information is applied as is to the unbundling repository. Make sure a
+    'check:bookmarks' part is issued earlier to check for race condition in
+    such update.
+
+    This behavior is suitable for pushing. Semantic adjustment will be needed
+    for pull.
+    """
+    changes = bookmarks.binarydecode(inpart)
+    op.repo._bookmarks.applychanges(op.repo, op.gettransaction(), changes)
+
 @parthandler('phase-heads')
 def handlephases(op, inpart):
     """apply phases from bundle part to repo"""


More information about the Mercurial-devel mailing list