inhibit: move transaction wrapping outside of repo setup
authorLaurent Charignon <lcharignon@fb.com>
Tue, 16 Jun 2015 10:07:51 -0700
changeset 1366 9c3ba42c582a
parent 1365 8ac1b7bd46ea
child 1367 0c134ca37567
inhibit: move transaction wrapping outside of repo setup Before this patch, transaction wrapping code was done in reposetup. It happened to cause stackoverflows in repos with a lot of subreps. This patch moves the wrapping to extsetup and avoids this problem.
hgext/inhibit.py
--- a/hgext/inhibit.py	Mon Jun 15 17:44:12 2015 -0700
+++ b/hgext/inhibit.py	Tue Jun 16 10:07:51 2015 -0700
@@ -48,9 +48,6 @@
             return newnode
 
     repo.__class__ = obsinhibitedrepo
-    # Wrapping this to inhibit obsolete revs resulting from a transaction
-    extensions.wrapfunction(localrepo.localrepository,
-                            'transaction', transactioncallback)
 
 def _update(orig, ui, repo, *args, **kwargs):
     """
@@ -199,6 +196,11 @@
     except KeyError:
         errormsg = _('Cannot use inhibit without the direct access extension')
         raise error.Abort(errormsg)
+
+    # Wrapping this to inhibit obsolete revs resulting from a transaction
+    extensions.wrapfunction(localrepo.localrepository,
+                            'transaction', transactioncallback)
+
     obsolete.cachefuncs['obsolete'] = _computeobsoleteset
     # wrap create marker to make it able to lift the inhibition
     extensions.wrapfunction(obsolete, 'createmarkers', _createmarkers)