--- 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