Comments
Patch
@@ -133,6 +133,11 @@ class improvement(object):
return NotImplemented
return self.name == other.name
+allformatvariant = []
+def registerformatvariant(cls):
+ allformatvariant.append(cls)
+ return cls
+
class formatvariant(object):
"""an improvement subclass dedicated to repository format"""
type = deficiency
@@ -188,6 +193,7 @@ class requirementformatvariant(formatvar
assert cls._requirement is not None
return cls._requirement in cls._newreporequirements(repo)
+@registerformatvariant
class fncache(requirementformatvariant):
name = 'fncache'
@@ -202,6 +208,7 @@ class fncache(requirementformatvariant):
'certain paths and performance of certain '
'operations should be improved')
+@registerformatvariant
class dotencode(requirementformatvariant):
name = 'dotencode'
@@ -215,6 +222,7 @@ class dotencode(requirementformatvariant
upgrademessage=_('repository will be better able to store files '
'beginning with a space or period')
+@registerformatvariant
class generaldelta(requirementformatvariant):
name='generaldelta'
@@ -236,6 +244,7 @@ class generaldelta(requirementformatvari
'CPU resources, making "hg push" and "hg pull" '
'faster')
+@registerformatvariant
class removecldeltachain(formatvariant):
name='removecldeltachain'
@@ -270,14 +279,9 @@ def finddeficiencies(repo):
# 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