mercurial/localrepo.py
changeset 32697 19b9fc40cc51
parent 32660 a722c8e17363
child 32729 c8177792fef6
--- 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