bundle: make applybundle1() return a bundleoperation
See previous commit for motivation. It already lets us share a little
bit more code in commands.py.
--- a/mercurial/bundle2.py Fri Jun 16 10:25:11 2017 -0700
+++ b/mercurial/bundle2.py Wed Jun 21 21:08:48 2017 -0700
@@ -311,8 +311,10 @@
raise TransactionUnavailable()
def applybundle1(repo, cg, tr, source, url, **kwargs):
- ret, addednodes = cg.apply(repo, tr, source, url, **kwargs)
- return ret
+ # the transactiongetter won't be used, but we might as well set it
+ op = bundleoperation(repo, lambda: tr)
+ _processchangegroup(op, cg, tr, source, url, **kwargs)
+ return op
def applybundle(repo, unbundler, tr, source=None, url=None):
# transform me into unbundler.apply() as soon as the freeze is lifted
--- a/mercurial/commands.py Fri Jun 16 10:25:11 2017 -0700
+++ b/mercurial/commands.py Wed Jun 21 21:08:48 2017 -0700
@@ -5214,13 +5214,12 @@
hint=_("see https://mercurial-scm.org/"
"wiki/BundleFeature for more "
"information"))
- modheads = bundle2.combinechangegroupresults(op)
else:
txnname = 'unbundle\n%s' % util.hidepassword(url)
with repo.transaction(txnname) as tr:
- modheads = bundle2.applybundle1(repo, gen, tr,
- source='unbundle',
- url=url)
+ op = bundle2.applybundle1(repo, gen, tr, source='unbundle',
+ url=url)
+ modheads = bundle2.combinechangegroupresults(op)
return postincoming(ui, repo, modheads, opts.get(r'update'), None, None)
--- a/mercurial/exchange.py Fri Jun 16 10:25:11 2017 -0700
+++ b/mercurial/exchange.py Wed Jun 21 21:08:48 2017 -0700
@@ -1448,8 +1448,9 @@
"changegroupsubset."))
else:
cg = pullop.remote.changegroupsubset(pullop.fetch, pullop.heads, 'pull')
- pullop.cgresult = bundle2.applybundle1(pullop.repo, cg, tr, 'pull',
- pullop.remote.url())
+ bundleop = bundle2.applybundle1(pullop.repo, cg, tr, 'pull',
+ pullop.remote.url())
+ pullop.cgresult = bundle2.combinechangegroupresults(bundleop)
def _pullphase(pullop):
# Get remote phases data from remote
@@ -1737,7 +1738,8 @@
# legacy case: bundle1 (changegroup 01)
txnname = "\n".join([source, util.hidepassword(url)])
with repo.lock(), repo.transaction(txnname) as tr:
- r = bundle2.applybundle1(repo, cg, tr, source, url)
+ op = bundle2.applybundle1(repo, cg, tr, source, url)
+ r = bundle2.combinechangegroupresults(op)
else:
r = None
try: