[PATCH 07 of 10 V9] exchange: getbundle `bookmarks` part generator
Stanislau Hlebik
stash at fb.com
Sun Nov 13 10:30:18 UTC 2016
# HG changeset patch
# User Stanislau Hlebik <stash at fb.com>
# Date 1479032456 28800
# Sun Nov 13 02:20:56 2016 -0800
# Branch stable
# Node ID 606bb4a7fb818f24d52e764828ba0d0a7921f999
# Parent bf21586f26e5a41f7d8bf342d4b4c16d71dbc6d2
exchange: getbundle `bookmarks` part generator
This generator will be used during pull operation.
diff --git a/mercurial/exchange.py b/mercurial/exchange.py
--- a/mercurial/exchange.py
+++ b/mercurial/exchange.py
@@ -1680,6 +1680,21 @@
if chunks:
bundler.newpart('hgtagsfnodes', data=''.join(chunks))
+ at getbundle2partsgenerator('bookmarks')
+def _getbundlebookmarkspart(bundler, repo, source, bundlecaps=None,
+ b2caps=None, heads=None, common=None,
+ **kwargs):
+ if not kwargs.get('bookmarks'):
+ return
+ if 'bookmarks' not in b2caps:
+ raise ValueError(
+ _('bookmarks are requested but client is not capable '
+ 'of receiving it'))
+
+ bookmarks = _getbookmarks(repo, **kwargs)
+ encodedbookmarks = bookmod.encodebookmarks(bookmarks)
+ bundler.newpart('bookmarks', data=encodedbookmarks)
+
def _getbookmarks(repo, **kwargs):
"""Returns bookmark to node mapping.
diff --git a/mercurial/wireproto.py b/mercurial/wireproto.py
--- a/mercurial/wireproto.py
+++ b/mercurial/wireproto.py
@@ -228,7 +228,9 @@
'bundlecaps': 'scsv',
'listkeys': 'csv',
'cg': 'boolean',
- 'cbattempted': 'boolean'}
+ 'cbattempted': 'boolean',
+ 'bookmarks': 'boolean',
+ }
# client side
More information about the Mercurial-devel
mailing list