[PATCH 08 of 10 V9] pull: use `bookmarks` bundle2 part
Stanislau Hlebik
stash at fb.com
Sun Nov 13 05:30:19 EST 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 35096015b14e891b5d6a12af036163875bc60460
# Parent 606bb4a7fb818f24d52e764828ba0d0a7921f999
pull: use `bookmarks` bundle2 part
Apply changes from `bookmarks` part.
diff --git a/mercurial/exchange.py b/mercurial/exchange.py
--- a/mercurial/exchange.py
+++ b/mercurial/exchange.py
@@ -1335,9 +1335,13 @@
kwargs['cg'] = pullop.fetch
if 'listkeys' in pullop.remotebundle2caps:
kwargs['listkeys'] = ['phases']
- if pullop.remotebookmarks is None:
- # make sure to always includes bookmark data when migrating
- # `hg incoming --bundle` to using this function.
+
+ if pullop.remotebookmarks is None:
+ # make sure to always includes bookmark data when migrating
+ # `hg incoming --bundle` to using this function.
+ if 'bookmarks' in pullop.remotebundle2caps:
+ kwargs['bookmarks'] = True
+ elif 'listkeys' in pullop.remotebundle2caps:
kwargs['listkeys'].append('bookmarks')
# If this is a full pull / clone and the server supports the clone bundles
@@ -1365,10 +1369,23 @@
_pullbundle2extraprepare(pullop, kwargs)
bundle = pullop.remote.getbundle('pull', **kwargs)
try:
- op = bundle2.processbundle(pullop.repo, bundle, pullop.gettransaction)
+ bundleopinput = {
+ 'processbookmarksmode': 'diverge',
+ 'explicitbookmarks': pullop.explicitbookmarks,
+ 'remotepath': pullop.remote.url(),
+ }
+ op = bundle2.bundleoperation(pullop.repo, pullop.gettransaction,
+ input=bundleopinput)
+ op = bundle2.processbundle(pullop.repo, bundle,
+ pullop.gettransaction, op=op)
except error.BundleValueError as exc:
raise error.Abort(_('missing support for %s') % exc)
+ # `bookmarks` part was in bundle and it was applied to the repo. No need to
+ # apply bookmarks one more time
+ if 'bookmarks' in kwargs and kwargs['bookmarks']:
+ pullop.stepsdone.add('bookmarks')
+
if pullop.fetch:
results = [cg['return'] for cg in op.records['changegroup']]
pullop.cgresult = changegroup.combineresults(results)
More information about the Mercurial-devel
mailing list