mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
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.
This commit is contained in:
parent
a87a5e29b1
commit
fb1d8fd59b
@ -105,7 +105,7 @@ explicitly do so with the --large flag passed to the :hg:`add`
|
||||
command.
|
||||
'''
|
||||
|
||||
from mercurial import commands, localrepo, extensions
|
||||
from mercurial import commands, localrepo
|
||||
|
||||
import lfcommands
|
||||
import reposetup
|
||||
@ -116,11 +116,8 @@ testedwith = 'internal'
|
||||
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)
|
||||
|
@ -153,6 +153,8 @@ class localrepository(object):
|
||||
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 @@ class localrepository(object):
|
||||
|
||||
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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user