Mercurial > hg
changeset 32032:189778a06743
upgrade: register all format variants in a list
Now that all known format variants exists outside of the function, we can gather
them in a lists. This build a single entry point other code can use (current
target: extensions).
The repository upgrade code is updated to simply use entries from this list.
As a side effect this will also allow extensions to register their own format
variants, to do this "properly" we should introduce a "registrar" for this
category of object. However I prefer to keep this series simple, and that will
be adventure for future time.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Wed, 12 Apr 2017 16:48:13 +0200 |
parents | 11a2461fc9b1 |
children | 0e9fece17db1 |
files | mercurial/upgrade.py |
diffstat | 1 files changed, 13 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/upgrade.py Wed Apr 12 16:34:05 2017 +0200 +++ b/mercurial/upgrade.py Wed Apr 12 16:48:13 2017 +0200 @@ -139,6 +139,12 @@ def __hash__(self): return hash(self.name) +allformatvariant = [] + +def registerformatvariant(cls): + allformatvariant.append(cls) + return cls + class formatvariant(improvement): """an improvement subclass dedicated to repository format""" type = deficiency @@ -197,6 +203,7 @@ assert cls._requirement is not None return cls._requirement in cls._newreporequirements(repo) +@registerformatvariant class fncache(requirementformatvariant): name = 'fncache' @@ -211,6 +218,7 @@ 'certain paths and performance of certain ' 'operations should be improved') +@registerformatvariant class dotencode(requirementformatvariant): name = 'dotencode' @@ -224,6 +232,7 @@ upgrademessage = _('repository will be better able to store files ' 'beginning with a space or period') +@registerformatvariant class generaldelta(requirementformatvariant): name = 'generaldelta' @@ -245,6 +254,7 @@ 'CPU resources, making "hg push" and "hg pull" ' 'faster') +@registerformatvariant class removecldeltachain(formatvariant): name = 'removecldeltachain' @@ -279,14 +289,9 @@ # in 0.9.2 and we don't support upgrading repos without these # requirements, so let's not bother. - if not fncache.fromrepo(repo): - deficiencies.append(fncache) - if not dotencode.fromrepo(repo): - deficiencies.append(dotencode) - if not generaldelta.fromrepo(repo): - deficiencies.append(generaldelta) - if not removecldeltachain.fromrepo(repo): - deficiencies.append(removecldeltachain) + for fv in allformatvariant: + if not fv.fromrepo(repo): + deficiencies.append(fv) return deficiencies