hgext/acl.py
changeset 34829 120c5c155ba4
parent 34779 cfb054a7ecc4
child 36376 dbadf28d4db0
--- a/hgext/acl.py	Mon Oct 16 18:16:29 2017 +0200
+++ b/hgext/acl.py	Sat Oct 14 01:16:03 2017 +0200
@@ -198,6 +198,7 @@
 from mercurial.i18n import _
 from mercurial import (
     error,
+    extensions,
     match,
     registrar,
     util,
@@ -307,7 +308,23 @@
         return match.match(repo.root, '', pats)
     return util.never
 
+def ensureenabled(ui):
+    """make sure the extension is enabled when used as hook
+
+    When acl is used through hooks, the extension is never formally loaded and
+    enabled. This has some side effect, for example the config declaration is
+    never loaded. This function ensure the extension is enabled when running
+    hooks.
+    """
+    if 'acl' in ui._knownconfig:
+        return
+    ui.setconfig('extensions', 'acl', '', source='internal')
+    extensions.loadall(ui, ['acl'])
+
 def hook(ui, repo, hooktype, node=None, source=None, **kwargs):
+
+    ensureenabled(ui)
+
     if hooktype not in ['pretxnchangegroup', 'pretxncommit']:
         raise error.Abort(_('config error - hook type "%s" cannot stop '
                            'incoming changesets nor commits') % hooktype)