[PATCH 08 of 10] bundle: transpose transaction scope with bundle type switch

Martin von Zweigbergk martinvonz at google.com
Sat Jun 24 11:38:36 EDT 2017


# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1498192077 25200
#      Thu Jun 22 21:27:57 2017 -0700
# Node ID 15326b3ffdaf861d6c7dd9dad850f8790a869427
# Parent  0e791a5d805adf64d9056f7ee7be1f084c7ca10b
bundle: transpose transaction scope with bundle type switch

This moves the transaction with-statements outside of the
per-bundle-version switches, so the next patch will be a little
simpler.

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -5203,14 +5203,15 @@
                         hint=_('use "hg debugapplystreamclonebundle"'))
             url = 'bundle:' + fname
             try:
-                if isinstance(gen, bundle2.unbundle20):
-                    with repo.transaction('unbundle') as tr:
+                txnname = 'unbundle'
+                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:
-                    txnname = 'unbundle\n%s' % util.hidepassword(url)
-                    with repo.transaction(txnname) as tr:
+                    else:
                         op = bundle2.applybundle1(repo, gen, tr,
                                                   source='unbundle', url=url)
             except error.BundleUnknownFeatureError as exc:
diff --git a/mercurial/repair.py b/mercurial/repair.py
--- a/mercurial/repair.py
+++ b/mercurial/repair.py
@@ -207,13 +207,14 @@
                 # silence internal shuffling chatter
                 repo.ui.pushbuffer()
             tmpbundleurl = 'bundle:' + vfs.join(tmpbundlefile)
-            if isinstance(gen, bundle2.unbundle20):
-                with repo.transaction('strip') as tr:
+            txnname = 'strip'
+            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:
-                txnname = "strip\n%s" % util.hidepassword(tmpbundleurl)
-                with repo.transaction(txnname) as tr:
+                else:
                     bundle2.applybundle1(repo, gen, tr, 'strip', tmpbundleurl,
                                          emptyok=True)
             if not repo.ui.verbose:


More information about the Mercurial-devel mailing list