diff -r 0c09afdf5704 -r 19b9fc40cc51 mercurial/localrepo.py --- a/mercurial/localrepo.py Tue Jun 06 08:58:27 2017 -0700 +++ b/mercurial/localrepo.py Fri May 19 20:29:11 2017 -0700 @@ -244,6 +244,10 @@ def changegroupsubset(self, bases, heads, source): return changegroup.changegroupsubset(self._repo, bases, heads, source) +# Increment the sub-version when the revlog v2 format changes to lock out old +# clients. +REVLOGV2_REQUIREMENT = 'exp-revlogv2.0' + class localrepository(object): supportedformats = { @@ -251,6 +255,7 @@ 'generaldelta', 'treemanifest', 'manifestv2', + REVLOGV2_REQUIREMENT, } _basesupported = supportedformats | { 'store', @@ -440,6 +445,10 @@ if r.startswith('exp-compression-'): self.svfs.options['compengine'] = r[len('exp-compression-'):] + # TODO move "revlogv2" to openerreqs once finalized. + if REVLOGV2_REQUIREMENT in self.requirements: + self.svfs.options['revlogv2'] = True + def _writerequirements(self): scmutil.writerequires(self.vfs, self.requirements) @@ -2070,4 +2079,11 @@ if ui.configbool('experimental', 'manifestv2', False): requirements.add('manifestv2') + revlogv2 = ui.config('experimental', 'revlogv2') + if revlogv2 == 'enable-unstable-format-and-corrupt-my-data': + requirements.remove('revlogv1') + # generaldelta is implied by revlogv2. + requirements.discard('generaldelta') + requirements.add(REVLOGV2_REQUIREMENT) + return requirements