Mercurial > hg
changeset 37135:ecac0006b90e
localrepo: move featuresetupfuncs out of localrepository class (API)
I want to establish an interface for local repositories.
featuresetupfuncs is a class attribute and is global/shared across all
localrepository instances. Let's move it to a module-level attribute
to clarify it isn't part of the local repository interface.
.. api::
localrepo.localrepository.featuresetupfuncs has been renamed to
localrepo.featuresetupfuncs.
Differential Revision: https://phab.mercurial-scm.org/D2925
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Tue, 20 Mar 2018 17:30:30 -0700 |
parents | 6890b7e991a4 |
children | e2d386b8a38f |
files | hgext/largefiles/__init__.py hgext/lfs/__init__.py mercurial/localrepo.py tests/test-requires.t |
diffstat | 4 files changed, 14 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/largefiles/__init__.py Sun Mar 04 17:11:33 2018 -0500 +++ b/hgext/largefiles/__init__.py Tue Mar 20 17:30:30 2018 -0700 @@ -146,7 +146,7 @@ supported |= {'largefiles'} def uisetup(ui): - localrepo.localrepository.featuresetupfuncs.add(featuresetup) + localrepo.featuresetupfuncs.add(featuresetup) hg.wirepeersetupfuncs.append(proto.wirereposetup) uisetupmod.uisetup(ui)
--- a/hgext/lfs/__init__.py Sun Mar 04 17:11:33 2018 -0500 +++ b/hgext/lfs/__init__.py Tue Mar 20 17:30:30 2018 -0700 @@ -199,7 +199,7 @@ supported |= {'lfs'} def uisetup(ui): - localrepo.localrepository.featuresetupfuncs.add(featuresetup) + localrepo.featuresetupfuncs.add(featuresetup) def reposetup(ui, repo): # Nothing to do with a remote repo
--- a/mercurial/localrepo.py Sun Mar 04 17:11:33 2018 -0500 +++ b/mercurial/localrepo.py Tue Mar 20 17:30:30 2018 -0700 @@ -309,6 +309,15 @@ # clients. REVLOGV2_REQUIREMENT = 'exp-revlogv2.0' +# Functions receiving (ui, features) that extensions can register to impact +# the ability to load repositories with custom requirements. Only +# functions defined in loaded extensions are called. +# +# The function receives a set of requirement strings that the repository +# is capable of opening. Functions will typically add elements to the +# set to reflect that the extension knows how to handle that requirements. +featuresetupfuncs = set() + class localrepository(object): # obsolete experimental requirements: @@ -336,10 +345,6 @@ 'treemanifest', } - # a list of (ui, featureset) functions. - # only functions defined in module of enabled extensions are invoked - featuresetupfuncs = set() - # list of prefix for file which can be written without 'wlock' # Extensions should extend this list when needed _wlockfreeprefix = { @@ -399,11 +404,11 @@ except IOError: pass - if self.featuresetupfuncs: + if 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: + for setupfunc in featuresetupfuncs: if setupfunc.__module__ in extmods: setupfunc(self.ui, self.supported) else:
--- a/tests/test-requires.t Sun Mar 04 17:11:33 2018 -0500 +++ b/tests/test-requires.t Tue Mar 20 17:30:30 2018 -0700 @@ -41,7 +41,7 @@ > supported |= {'featuresetup-test'} > return > def uisetup(ui): - > localrepo.localrepository.featuresetupfuncs.add(featuresetup) + > localrepo.featuresetupfuncs.add(featuresetup) > EOF $ cat > supported/.hg/hgrc <<EOF > [extensions]