[PATCH evolve-ext-V2] inhibit: move transaction wrapping outside of repo setup

Laurent Charignon lcharignon at fb.com
Tue Jun 16 13:17:02 CDT 2015


# HG changeset patch
# User Laurent Charignon <lcharignon at fb.com>
# Date 1434474471 25200
#      Tue Jun 16 10:07:51 2015 -0700
# Node ID c203f07c665e960f348b7b4f0a947565f15a8c22
# Parent  5c13945b32fc4bcb4998a1bdd0b669ac43c26574
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.

diff --git a/hgext/inhibit.py b/hgext/inhibit.py
--- a/hgext/inhibit.py
+++ b/hgext/inhibit.py
@@ -48,9 +48,6 @@ def reposetup(ui, repo):
             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 @@ def extsetup(ui):
     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)


More information about the Mercurial-devel mailing list