[PATCH 6 of 8 V7] pull: use `bookmarks` bundle2 part
Stanislau Hlebik
stash at fb.com
Wed Nov 2 10:06:48 EDT 2016
# HG changeset patch
# User Stanislau Hlebik <stash at fb.com>
# Date 1478086459 25200
# Wed Nov 02 04:34:19 2016 -0700
# Branch stable
# Node ID e2122d93aeb4da4a39c0c257e74414ac348a89f1
# Parent 12466c729bb6783fbef11a6e148c648809b4f592
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
@@ -1322,9 +1322,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
@@ -1352,10 +1356,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