diff mercurial/exchange.py @ 35276:cb4dcd7fabe7

getbundle: add support for 'bookmarks' boolean argument This new argument requests a 'bookmarks' part from the server. It is meant to be used instead of the "listkeys" request.
author Boris Feld <boris.feld@octobus.net>
date Tue, 17 Oct 2017 15:27:17 +0200
parents a1e70c1dbec0
children 44b8b5ad30eb
line wrap: on
line diff
--- a/mercurial/exchange.py	Tue Oct 17 15:26:16 2017 +0200
+++ b/mercurial/exchange.py	Tue Oct 17 15:27:17 2017 +0200
@@ -1755,6 +1755,19 @@
         if 'treemanifest' in repo.requirements:
             part.addparam('treemanifest', '1')
 
+@getbundle2partsgenerator('bookmarks')
+def _getbundlebookmarkpart(bundler, repo, source, bundlecaps=None,
+                              b2caps=None, **kwargs):
+    """add a bookmark part to the requested bundle"""
+    if not kwargs.get('bookmarks', False):
+        return
+    if 'bookmarks' not in b2caps:
+        raise ValueError(_('no common bookmarks exchange method'))
+    books  = bookmod.listbinbookmarks(repo)
+    data = bookmod.binaryencode(books)
+    if data:
+        bundler.newpart('bookmarks', data=data)
+
 @getbundle2partsgenerator('listkeys')
 def _getbundlelistkeysparts(bundler, repo, source, bundlecaps=None,
                             b2caps=None, **kwargs):