# HG changeset patch # User Sune Foldager # Date 1284540250 -7200 # Node ID 3388ab21d768d87197d5eb1901f56c4ca23e6ea4 # Parent 6ee719f56f0130559e9959afe0d75e39fa9ebbfa localrepo: factor out requirement application and write diff -r 6ee719f56f01 -r 3388ab21d768 mercurial/localrepo.py --- a/mercurial/localrepo.py Tue Sep 14 16:03:10 2010 +0200 +++ b/mercurial/localrepo.py Wed Sep 15 10:44:10 2010 +0200 @@ -21,7 +21,8 @@ class localrepository(repo.repository): capabilities = set(('lookup', 'changegroupsubset', 'branchmap', 'pushkey')) - supported = set('revlogv1 store fncache shared parentdelta'.split()) + supportedformats = set(('revlogv1', 'parentdelta')) + supported = supportedformats | set(('store', 'fncache', 'shared')) def __init__(self, baseui, path=None, create=0): repo.repository.__init__(self) @@ -58,10 +59,6 @@ ) if self.ui.configbool('format', 'parentdelta', False): requirements.append("parentdelta") - reqfile = self.opener("requires", "w") - for r in requirements: - reqfile.write("%s\n" % r) - reqfile.close() else: raise error.RepoError(_("repository %s not found") % path) elif create: @@ -93,9 +90,9 @@ self.sopener = self.store.opener self.sjoin = self.store.join self.opener.createmode = self.store.createmode - self.sopener.options = {} - if 'parentdelta' in requirements: - self.sopener.options['parentdelta'] = 1 + self._applyrequirements(requirements) + if create: + self._writerequirements() # These two define the set of tags for this repository. _tags # maps tag name to node; _tagtypes maps tag name to 'global' or @@ -112,6 +109,18 @@ self._datafilters = {} self._transref = self._lockref = self._wlockref = None + def _applyrequirements(self, requirements): + self.requirements = requirements + self.sopener.options = {} + if 'parentdelta' in requirements: + self.sopener.options['parentdelta'] = 1 + + def _writerequirements(self): + reqfile = self.opener("requires", "w") + for r in self.requirements: + reqfile.write("%s\n" % r) + reqfile.close() + def _checknested(self, path): """Determine if path is a legal nested repository.""" if not path.startswith(self.root):