changeset 33043:18c2489ac96d

bundle: make applybundle() delegate v1 bundles to applybundle1()
author Martin von Zweigbergk <martinvonz@google.com>
date Thu, 22 Jun 2017 15:00:19 -0700
parents dbc2ee17053e
children 1d2b68952950
files hgext/histedit.py hgext/shelve.py mercurial/bundle2.py mercurial/commands.py mercurial/exchange.py mercurial/repair.py
diffstat 6 files changed, 25 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/histedit.py	Thu Jun 22 21:27:57 2017 -0700
+++ b/hgext/histedit.py	Thu Jun 22 15:00:19 2017 -0700
@@ -1198,14 +1198,8 @@
             f = hg.openpath(ui, backupfile)
             gen = exchange.readbundle(ui, f, backupfile)
             with repo.transaction('histedit.abort') as tr:
-                if not isinstance(gen, bundle2.unbundle20):
-                    bundle2.applybundle1(repo, gen, tr,
-                                         source='histedit',
-                                         url='bundle:' + backupfile)
-                else:
-                    bundle2.applybundle(repo, gen, tr,
-                                        source='histedit',
-                                        url='bundle:' + backupfile)
+                bundle2.applybundle(repo, gen, tr, source='histedit',
+                                    url='bundle:' + backupfile)
 
             os.remove(backupfile)
 
--- a/hgext/shelve.py	Thu Jun 22 21:27:57 2017 -0700
+++ b/hgext/shelve.py	Thu Jun 22 15:00:19 2017 -0700
@@ -126,17 +126,10 @@
         fp = self.opener()
         try:
             gen = exchange.readbundle(self.repo.ui, fp, self.fname, self.vfs)
-            if not isinstance(gen, bundle2.unbundle20):
-                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(),
-                                    source='unshelve',
-                                    url='bundle:' + self.vfs.join(self.fname))
+            bundle2.applybundle(self.repo, gen, self.repo.currenttransaction(),
+                                source='unshelve',
+                                url='bundle:' + self.vfs.join(self.fname),
+                                targetphase=phases.secret)
         finally:
             fp.close()
 
--- a/mercurial/bundle2.py	Thu Jun 22 21:27:57 2017 -0700
+++ b/mercurial/bundle2.py	Thu Jun 22 15:00:19 2017 -0700
@@ -316,14 +316,17 @@
     _processchangegroup(op, cg, tr, source, url, **kwargs)
     return op
 
-def applybundle(repo, unbundler, tr, source=None, url=None):
+def applybundle(repo, unbundler, tr, source=None, url=None, **kwargs):
     # transform me into unbundler.apply() as soon as the freeze is lifted
-    tr.hookargs['bundle2'] = '1'
-    if source is not None and 'source' not in tr.hookargs:
-        tr.hookargs['source'] = source
-    if url is not None and 'url' not in tr.hookargs:
-        tr.hookargs['url'] = url
-    return processbundle(repo, unbundler, lambda: tr)
+    if isinstance(unbundler, unbundle20):
+        tr.hookargs['bundle2'] = '1'
+        if source is not None and 'source' not in tr.hookargs:
+            tr.hookargs['source'] = source
+        if url is not None and 'url' not in tr.hookargs:
+            tr.hookargs['url'] = url
+        return processbundle(repo, unbundler, lambda: tr)
+    else:
+        return applybundle1(repo, unbundler, tr, source, url, **kwargs)
 
 def processbundle(repo, unbundler, transactiongetter=None, op=None):
     """This function process a bundle, apply effect to/from a repo
--- a/mercurial/commands.py	Thu Jun 22 21:27:57 2017 -0700
+++ b/mercurial/commands.py	Thu Jun 22 15:00:19 2017 -0700
@@ -5207,13 +5207,8 @@
                 if not isinstance(gen, bundle2.unbundle20):
                     txnname = 'unbundle\n%s' % util.hidepassword(url)
                 with repo.transaction(txnname) as tr:
-                    if isinstance(gen, bundle2.unbundle20):
-                        op = bundle2.applybundle(repo, gen, tr,
-                                                 source='unbundle',
-                                                 url=url)
-                    else:
-                        op = bundle2.applybundle1(repo, gen, tr,
-                                                  source='unbundle', url=url)
+                    op = bundle2.applybundle(repo, gen, tr, source='unbundle',
+                                             url=url)
             except error.BundleUnknownFeatureError as exc:
                 raise error.Abort(
                     _('%s: unknown bundle feature, %s') % (fname, exc),
--- a/mercurial/exchange.py	Thu Jun 22 21:27:57 2017 -0700
+++ b/mercurial/exchange.py	Thu Jun 22 15:00:19 2017 -0700
@@ -1448,8 +1448,8 @@
                            "changegroupsubset."))
     else:
         cg = pullop.remote.changegroupsubset(pullop.fetch, pullop.heads, 'pull')
-    bundleop = bundle2.applybundle1(pullop.repo, cg, tr, 'pull',
-                                    pullop.remote.url())
+    bundleop = bundle2.applybundle(pullop.repo, cg, tr, 'pull',
+                                   pullop.remote.url())
     pullop.cgresult = bundle2.combinechangegroupresults(bundleop)
 
 def _pullphase(pullop):
@@ -1738,7 +1738,7 @@
             # legacy case: bundle1 (changegroup 01)
             txnname = "\n".join([source, util.hidepassword(url)])
             with repo.lock(), repo.transaction(txnname) as tr:
-                op = bundle2.applybundle1(repo, cg, tr, source, url)
+                op = bundle2.applybundle(repo, cg, tr, source, url)
                 r = bundle2.combinechangegroupresults(op)
         else:
             r = None
@@ -1999,12 +1999,10 @@
             fh = urlmod.open(ui, url)
             cg = readbundle(ui, fh, 'stream')
 
-            if isinstance(cg, bundle2.unbundle20):
-                bundle2.applybundle(repo, cg, tr, 'clonebundles', url)
-            elif isinstance(cg, streamclone.streamcloneapplier):
+            if isinstance(cg, streamclone.streamcloneapplier):
                 cg.apply(repo)
             else:
-                bundle2.applybundle1(repo, cg, tr, 'clonebundles', url)
+                bundle2.applybundle(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 21:27:57 2017 -0700
+++ b/mercurial/repair.py	Thu Jun 22 15:00:19 2017 -0700
@@ -211,12 +211,8 @@
             if not isinstance(gen, bundle2.unbundle20):
                 txnname = "strip\n%s" % util.hidepassword(tmpbundleurl)
             with repo.transaction(txnname) as tr:
-                if isinstance(gen, bundle2.unbundle20):
-                    bundle2.applybundle(repo, gen, tr, source='strip',
-                                        url=tmpbundleurl)
-                else:
-                    bundle2.applybundle1(repo, gen, tr, 'strip', tmpbundleurl,
-                                         emptyok=True)
+                bundle2.applybundle(repo, gen, tr, source='strip',
+                                    url=tmpbundleurl, emptyok=True)
             if not repo.ui.verbose:
                 repo.ui.popbuffer()
             f.close()