[PATCH 1 of 4] localrepo: make requirements and openerreqs mutable by subclasses
Bryan O'Sullivan
bos at serpentine.com
Mon Jun 25 16:58:31 CDT 2012
# HG changeset patch
# User Bryan O'Sullivan <bryano at fb.com>
# Date 1340657770 25200
# Node ID 5c2fe39e4efcc5c70797afe149054a38855e7516
# Parent 7847fe0f5e1312c42d0ba26e0b92facec10c68c1
localrepo: make requirements and openerreqs mutable by subclasses
This is necessary for extensions that need to modify a repo's
requirements.
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -30,6 +30,11 @@ class localrepository(repo.repository):
supportedformats = set(('revlogv1', 'generaldelta'))
supported = supportedformats | set(('store', 'fncache', 'shared',
'dotencode'))
+ openerreqs = set(('revlogv1', 'generaldelta'))
+ requirements = ['revlogv1']
+
+ def _baserequirements(self, create):
+ return self.requirements[:]
def __init__(self, baseui, path=None, create=False):
repo.repository.__init__(self)
@@ -57,7 +62,7 @@ class localrepository(repo.repository):
if not os.path.exists(path):
util.makedirs(path)
util.makedir(self.path, notindexed=True)
- requirements = ["revlogv1"]
+ requirements = self._baserequirements(create)
if self.ui.configbool('format', 'usestore', True):
os.mkdir(os.path.join(self.path, "store"))
requirements.append("store")
@@ -121,9 +126,8 @@ class localrepository(repo.repository):
def _applyrequirements(self, requirements):
self.requirements = requirements
- openerreqs = set(('revlogv1', 'generaldelta'))
self.sopener.options = dict((r, 1) for r in requirements
- if r in openerreqs)
+ if r in self.openerreqs)
def _writerequirements(self):
reqfile = self.opener("requires", "w")
More information about the Mercurial-devel
mailing list