Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/localrepo.py @ 17137:b090601a80d1
localrepo: make requirements and openerreqs mutable by subclasses
This is necessary for extensions that need to modify a repo's
requirements.
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Wed, 11 Jul 2012 15:36:00 -0700 |
parents | 28ed1c4511ce |
children | ad1b5e070f16 |
comparison
equal
deleted
inserted
replaced
17136:de8173d0c326 | 17137:b090601a80d1 |
---|---|
27 capabilities = set(('lookup', 'changegroupsubset', 'branchmap', 'pushkey', | 27 capabilities = set(('lookup', 'changegroupsubset', 'branchmap', 'pushkey', |
28 'known', 'getbundle')) | 28 'known', 'getbundle')) |
29 supportedformats = set(('revlogv1', 'generaldelta')) | 29 supportedformats = set(('revlogv1', 'generaldelta')) |
30 supported = supportedformats | set(('store', 'fncache', 'shared', | 30 supported = supportedformats | set(('store', 'fncache', 'shared', |
31 'dotencode')) | 31 'dotencode')) |
32 openerreqs = set(('revlogv1', 'generaldelta')) | |
33 requirements = ['revlogv1'] | |
34 | |
35 def _baserequirements(self, create): | |
36 return self.requirements[:] | |
32 | 37 |
33 def __init__(self, baseui, path=None, create=False): | 38 def __init__(self, baseui, path=None, create=False): |
34 repo.repository.__init__(self) | 39 repo.repository.__init__(self) |
35 self.root = os.path.realpath(util.expandpath(path)) | 40 self.root = os.path.realpath(util.expandpath(path)) |
36 self.path = os.path.join(self.root, ".hg") | 41 self.path = os.path.join(self.root, ".hg") |
54 if not os.path.isdir(self.path): | 59 if not os.path.isdir(self.path): |
55 if create: | 60 if create: |
56 if not os.path.exists(path): | 61 if not os.path.exists(path): |
57 util.makedirs(path) | 62 util.makedirs(path) |
58 util.makedir(self.path, notindexed=True) | 63 util.makedir(self.path, notindexed=True) |
59 requirements = ["revlogv1"] | 64 requirements = self._baserequirements(create) |
60 if self.ui.configbool('format', 'usestore', True): | 65 if self.ui.configbool('format', 'usestore', True): |
61 os.mkdir(os.path.join(self.path, "store")) | 66 os.mkdir(os.path.join(self.path, "store")) |
62 requirements.append("store") | 67 requirements.append("store") |
63 if self.ui.configbool('format', 'usefncache', True): | 68 if self.ui.configbool('format', 'usefncache', True): |
64 requirements.append("fncache") | 69 requirements.append("fncache") |
118 # Maps a property name to its util.filecacheentry | 123 # Maps a property name to its util.filecacheentry |
119 self._filecache = {} | 124 self._filecache = {} |
120 | 125 |
121 def _applyrequirements(self, requirements): | 126 def _applyrequirements(self, requirements): |
122 self.requirements = requirements | 127 self.requirements = requirements |
123 openerreqs = set(('revlogv1', 'generaldelta')) | |
124 self.sopener.options = dict((r, 1) for r in requirements | 128 self.sopener.options = dict((r, 1) for r in requirements |
125 if r in openerreqs) | 129 if r in self.openerreqs) |
126 | 130 |
127 def _writerequirements(self): | 131 def _writerequirements(self): |
128 reqfile = self.opener("requires", "w") | 132 reqfile = self.opener("requires", "w") |
129 for r in self.requirements: | 133 for r in self.requirements: |
130 reqfile.write("%s\n" % r) | 134 reqfile.write("%s\n" % r) |