# HG changeset patch # User Gregory Szorc # Date 1536361075 25200 # Node ID 41aa5dced975ae052089cd50ff6539c63a0ad5aa # Parent 4afd2af36456659a8f36983772206abe13b090ef localrepo: pass ui to newreporequirements() (API) newreporequirements() is called as part of creating a new repository. It doesn't make much sense for it to receive a repo instance as part of determining what requirements for new repos should be. .. api:: localrepo.newreporequirements() receives a ui instead of a repo Differential Revision: https://phab.mercurial-scm.org/D4533 diff -r 4afd2af36456 -r 41aa5dced975 mercurial/localrepo.py --- a/mercurial/localrepo.py Tue Sep 11 15:40:33 2018 -0700 +++ b/mercurial/localrepo.py Fri Sep 07 15:57:55 2018 -0700 @@ -476,7 +476,7 @@ if not self.vfs.isdir(): if create: - self.requirements = newreporequirements(self) + self.requirements = newreporequirements(self.ui) if not self.wvfs.exists(): self.wvfs.makedirs() @@ -2402,13 +2402,12 @@ def islocal(path): return True -def newreporequirements(repo): +def newreporequirements(ui): """Determine the set of requirements for a new local repository. Extensions can wrap this function to specify custom requirements for new repositories. """ - ui = repo.ui requirements = {'revlogv1'} if ui.configbool('format', 'usestore'): requirements.add('store') @@ -2444,7 +2443,7 @@ requirements.discard('generaldelta') requirements.add(REVLOGV2_REQUIREMENT) # experimental config: format.internal-phase - if repo.ui.configbool('format', 'internal-phase'): + if ui.configbool('format', 'internal-phase'): requirements.add('internal-phase') return requirements diff -r 4afd2af36456 -r 41aa5dced975 mercurial/upgrade.py --- a/mercurial/upgrade.py Tue Sep 11 15:40:33 2018 -0700 +++ b/mercurial/upgrade.py Fri Sep 07 15:57:55 2018 -0700 @@ -198,8 +198,8 @@ _requirement = None @staticmethod - def _newreporequirements(repo): - return localrepo.newreporequirements(repo) + def _newreporequirements(ui): + return localrepo.newreporequirements(ui) @classmethod def fromrepo(cls, repo): @@ -209,7 +209,7 @@ @classmethod def fromconfig(cls, repo): assert cls._requirement is not None - return cls._requirement in cls._newreporequirements(repo) + return cls._requirement in cls._newreporequirements(repo.ui) @registerformatvariant class fncache(requirementformatvariant): @@ -751,7 +751,7 @@ # FUTURE there is potentially a need to control the wanted requirements via # command arguments or via an extension hook point. - newreqs = localrepo.newreporequirements(repo) + newreqs = localrepo.newreporequirements(repo.ui) newreqs.update(preservedrequirements(repo)) noremovereqs = (repo.requirements - newreqs - diff -r 4afd2af36456 -r 41aa5dced975 tests/simplestorerepo.py --- a/tests/simplestorerepo.py Tue Sep 11 15:40:33 2018 -0700 +++ b/tests/simplestorerepo.py Fri Sep 07 15:57:55 2018 -0700 @@ -712,9 +712,9 @@ def featuresetup(ui, supported): supported.add(REQUIREMENT) -def newreporequirements(orig, repo): +def newreporequirements(orig, ui): """Modifies default requirements for new repos to use the simple store.""" - requirements = orig(repo) + requirements = orig(ui) # These requirements are only used to affect creation of the store # object. We have our own store. So we can remove them.