bundle: add a applybundle1() method
This is one step towards removing a bunch of "if isinstance(gen,
unbundle20)" by treating bundle1 and bundle2 more similarly.
The name may sounds ironic for a method in the bundle2 module, but I
didn't think it was worth it yet to create a new 'bundle' module that
depends on the 'bundle2' module. Besides, we'll inline the method
again later.
--- a/hgext/histedit.py Thu Jun 22 15:59:07 2017 -0700
+++ b/hgext/histedit.py Fri Jun 16 10:25:11 2017 -0700
@@ -1199,7 +1199,9 @@
gen = exchange.readbundle(ui, f, backupfile)
with repo.transaction('histedit.abort') as tr:
if not isinstance(gen, bundle2.unbundle20):
- gen.apply(repo, tr, 'histedit', 'bundle:' + backupfile)
+ bundle2.applybundle1(repo, gen, tr,
+ source='histedit',
+ url='bundle:' + backupfile)
else:
bundle2.applybundle(repo, gen, tr,
source='histedit',
--- a/hgext/shelve.py Thu Jun 22 15:59:07 2017 -0700
+++ b/hgext/shelve.py Fri Jun 16 10:25:11 2017 -0700
@@ -127,9 +127,11 @@
try:
gen = exchange.readbundle(self.repo.ui, fp, self.fname, self.vfs)
if not isinstance(gen, bundle2.unbundle20):
- gen.apply(self.repo, self.repo.currenttransaction(), 'unshelve',
- 'bundle:' + self.vfs.join(self.fname),
- targetphase=phases.secret)
+ bundle2.applybundle1(self.repo, gen,
+ self.repo.currenttransaction(),
+ source='unshelve',
+ url='bundle:' + self.vfs.join(self.fname),
+ targetphase=phases.secret)
else:
bundle2.applybundle(self.repo, gen,
self.repo.currenttransaction(),
--- a/mercurial/bundle2.py Thu Jun 22 15:59:07 2017 -0700
+++ b/mercurial/bundle2.py Fri Jun 16 10:25:11 2017 -0700
@@ -310,6 +310,10 @@
to be created"""
raise TransactionUnavailable()
+def applybundle1(repo, cg, tr, source, url, **kwargs):
+ ret, addednodes = cg.apply(repo, tr, source, url, **kwargs)
+ return ret
+
def applybundle(repo, unbundler, tr, source=None, url=None):
# transform me into unbundler.apply() as soon as the freeze is lifted
tr.hookargs['bundle2'] = '1'
--- a/mercurial/commands.py Thu Jun 22 15:59:07 2017 -0700
+++ b/mercurial/commands.py Fri Jun 16 10:25:11 2017 -0700
@@ -5218,7 +5218,9 @@
else:
txnname = 'unbundle\n%s' % util.hidepassword(url)
with repo.transaction(txnname) as tr:
- modheads, addednodes = gen.apply(repo, tr, 'unbundle', url)
+ modheads = bundle2.applybundle1(repo, gen, tr,
+ source='unbundle',
+ url=url)
return postincoming(ui, repo, modheads, opts.get(r'update'), None, None)
--- a/mercurial/exchange.py Thu Jun 22 15:59:07 2017 -0700
+++ b/mercurial/exchange.py Fri Jun 16 10:25:11 2017 -0700
@@ -1448,7 +1448,7 @@
"changegroupsubset."))
else:
cg = pullop.remote.changegroupsubset(pullop.fetch, pullop.heads, 'pull')
- pullop.cgresult, addednodes = cg.apply(pullop.repo, tr, 'pull',
+ pullop.cgresult = bundle2.applybundle1(pullop.repo, cg, tr, 'pull',
pullop.remote.url())
def _pullphase(pullop):
@@ -1737,7 +1737,7 @@
# legacy case: bundle1 (changegroup 01)
txnname = "\n".join([source, util.hidepassword(url)])
with repo.lock(), repo.transaction(txnname) as tr:
- r, addednodes = cg.apply(repo, tr, source, url)
+ r = bundle2.applybundle1(repo, cg, tr, source, url)
else:
r = None
try:
@@ -2002,7 +2002,7 @@
elif isinstance(cg, streamclone.streamcloneapplier):
cg.apply(repo)
else:
- cg.apply(repo, tr, 'clonebundles', url)
+ bundle2.applybundle1(repo, cg, tr, 'clonebundles', url)
return True
except urlerr.httperror as e:
ui.warn(_('HTTP error fetching bundle: %s\n') % str(e))
--- a/mercurial/repair.py Thu Jun 22 15:59:07 2017 -0700
+++ b/mercurial/repair.py Fri Jun 16 10:25:11 2017 -0700
@@ -214,7 +214,8 @@
else:
txnname = "strip\n%s" % util.hidepassword(tmpbundleurl)
with repo.transaction(txnname) as tr:
- gen.apply(repo, tr, 'strip', tmpbundleurl, True)
+ bundle2.applybundle1(repo, gen, tr, 'strip', tmpbundleurl,
+ emptyok=True)
if not repo.ui.verbose:
repo.ui.popbuffer()
f.close()