[PATCH 08 of 10 V8] pull: use `bookmarks` bundle2 part
Stanislau Hlebik
stash at fb.com
Sat Nov 12 20:19:58 UTC 2016
# HG changeset patch
# User Stanislau Hlebik <stash at fb.com>
# Date 1478980606 28800
# Sat Nov 12 11:56:46 2016 -0800
# Branch stable
# Node ID 66787435b18cf4050ba50097b4d6725f09233b74
# Parent 7bd99f5871d67df64e60174f2c349bc088a584f6
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