[PATCH] localrepo: invoke only feature setup functions for enabled extensions
FUJIWARA Katsunori
foozy at lares.dti.ne.jp
Thu Oct 17 12:48:29 UTC 2013
# HG changeset patch
# User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
# Date 1382013917 -32400
# Thu Oct 17 21:45:17 2013 +0900
# Node ID 2d01803ef7a896e114e7983022fe40ceb7823346
# Parent aebfbb68fe9277803d9f68943bf2e63391bd08c5
localrepo: invoke only feature setup functions for enabled extensions
Before this patch, each feature setup functions for localrepository
class should examine whether corresponding extension is enabled or not
by themselves.
This patch invokes only feature setup functions defined in module of
enabled extensions, and it makes implementation of feature setup
functions easier and simpler.
diff --git a/hgext/largefiles/__init__.py b/hgext/largefiles/__init__.py
--- a/hgext/largefiles/__init__.py
+++ b/hgext/largefiles/__init__.py
@@ -105,7 +105,7 @@
command.
'''
-from mercurial import commands, localrepo, extensions
+from mercurial import commands, localrepo
import lfcommands
import reposetup
@@ -116,11 +116,8 @@
reposetup = reposetup.reposetup
def featuresetup(ui, supported):
- for name, module in extensions.extensions(ui):
- if __name__ == module.__name__:
- # don't die on seeing a repo with the largefiles requirement
- supported |= set(['largefiles'])
- return
+ # don't die on seeing a repo with the largefiles requirement
+ supported |= set(['largefiles'])
def uisetup(ui):
localrepo.localrepository.featuresetupfuncs.add(featuresetup)
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -153,6 +153,8 @@
requirements = ['revlogv1']
filtername = None
+ # a list of (ui, featureset) functions.
+ # only functions defined in module of enabled extensions are invoked
featuresetupfuncs = set()
def _baserequirements(self, create):
@@ -181,8 +183,11 @@
if self.featuresetupfuncs:
self.supported = set(self._basesupported) # use private copy
+ extmods = set(m.__name__ for n, m
+ in extensions.extensions(self.ui))
for setupfunc in self.featuresetupfuncs:
- setupfunc(self.ui, self.supported)
+ if setupfunc.__module__ in extmods:
+ setupfunc(self.ui, self.supported)
else:
self.supported = self._basesupported
More information about the Mercurial-devel
mailing list