[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