dirstate-v2: freeze the on-disk format
authorPierre-Yves David <pierre-yves.david@octobus.net>
Wed, 20 Oct 2021 00:57:02 +0200
changeset 48295 bf11ff22a9af
parent 48294 e2836d08c88c
child 48296 4ee6b8b40787
dirstate-v2: freeze the on-disk format It seems the format as reached a good balance. With a core of new capabilities that motivated it initially and enough new feature and room for future improvement to be a clear progress we can set a milestone for. Having the format frozen will help the feature to get real life testing, outside of the test suite. The feature itself stay experimental but the config gains a new name to avoid people enable non-frozen version by default. If too many bugs are reported during the RC we might move the format back to experimental and drop its support in future version (in favor of a new one) Differential Revision: https://phab.mercurial-scm.org/D11709
mercurial/configitems.py
mercurial/localrepo.py
mercurial/requirements.py
mercurial/upgrade_utils/actions.py
rust/hg-core/src/requirements.rs
tests/test-basic.t
tests/test-commandserver.t
tests/test-dirstate-race.t
tests/test-dirstate-race2.t
tests/test-dirstate.t
tests/test-hgignore.t
tests/test-init.t
tests/test-lfconvert.t
tests/test-lfs-largefiles.t
tests/test-narrow-clone-no-ellipsis.t
tests/test-narrow-clone-stream.t
tests/test-narrow-clone.t
tests/test-narrow-sparse.t
tests/test-permissions.t
tests/test-persistent-nodemap.t
tests/test-phases.t
tests/test-purge.t
tests/test-remotefilelog-clone-tree.t
tests/test-remotefilelog-clone.t
tests/test-remotefilelog-log.t
tests/test-repo-compengines.t
tests/test-requires.t
tests/test-revlog-v2.t
tests/test-share-safe.t
tests/test-sparse-requirement.t
tests/test-sqlitestore.t
tests/test-status.t
tests/test-stream-bundle-v2.t
tests/test-symlinks.t
tests/test-upgrade-repo.t
--- a/mercurial/configitems.py	Mon Nov 01 14:59:07 2021 -0400
+++ b/mercurial/configitems.py	Wed Oct 20 00:57:02 2021 +0200
@@ -1306,7 +1306,7 @@
     # Enable this dirstate format *when creating a new repository*.
     # Which format to use for existing repos is controlled by .hg/requires
     b'format',
-    b'exp-dirstate-v2',
+    b'exp-rc-dirstate-v2',
     default=False,
     experimental=True,
 )
@@ -1880,7 +1880,7 @@
     default=b'skip',
     experimental=True,
 )
-# experimental as long as format.exp-dirstate-v2 is.
+# experimental as long as format.exp-rc-dirstate-v2 is.
 coreconfigitem(
     b'storage',
     b'dirstate-v2.slow-path',
--- a/mercurial/localrepo.py	Mon Nov 01 14:59:07 2021 -0400
+++ b/mercurial/localrepo.py	Wed Oct 20 00:57:02 2021 +0200
@@ -1189,7 +1189,7 @@
             b"fast implementation."
         )
         hint = _(
-            b"check `hg help config.format.exp-dirstate-v2` " b"for details"
+            b"check `hg help config.format.exp-rc-dirstate-v2` " b"for details"
         )
         if not dirstate.HAS_FAST_DIRSTATE_V2:
             if slow_path == b'warn':
@@ -3630,9 +3630,9 @@
         if ui.configbool(b'format', b'sparse-revlog'):
             requirements.add(requirementsmod.SPARSEREVLOG_REQUIREMENT)
 
-    # experimental config: format.exp-dirstate-v2
+    # experimental config: format.exp-rc-dirstate-v2
     # Keep this logic in sync with `has_dirstate_v2()` in `tests/hghave.py`
-    if ui.configbool(b'format', b'exp-dirstate-v2'):
+    if ui.configbool(b'format', b'exp-rc-dirstate-v2'):
         requirements.add(requirementsmod.DIRSTATE_V2_REQUIREMENT)
 
     # experimental config: format.exp-use-copies-side-data-changeset
--- a/mercurial/requirements.py	Mon Nov 01 14:59:07 2021 -0400
+++ b/mercurial/requirements.py	Wed Oct 20 00:57:02 2021 +0200
@@ -12,7 +12,7 @@
 STORE_REQUIREMENT = b'store'
 FNCACHE_REQUIREMENT = b'fncache'
 
-DIRSTATE_V2_REQUIREMENT = b'exp-dirstate-v2'
+DIRSTATE_V2_REQUIREMENT = b'dirstate-v2'
 
 # When narrowing is finalized and no longer subject to format changes,
 # we should move this to just "narrow" or similar.
--- a/mercurial/upgrade_utils/actions.py	Mon Nov 01 14:59:07 2021 -0400
+++ b/mercurial/upgrade_utils/actions.py	Wed Oct 20 00:57:02 2021 +0200
@@ -178,7 +178,9 @@
 
     description = _(
         b'version 1 of the dirstate file format requires '
-        b'reading and parsing it all at once.'
+        b'reading and parsing it all at once.\n'
+        b'Version 2 has a better structure,'
+        b'better information and lighter update mechanism'
     )
 
     upgrademessage = _(b'"hg status" will be faster')
--- a/rust/hg-core/src/requirements.rs	Mon Nov 01 14:59:07 2021 -0400
+++ b/rust/hg-core/src/requirements.rs	Wed Oct 20 00:57:02 2021 +0200
@@ -92,7 +92,7 @@
 
 // Copied from mercurial/requirements.py:
 
-pub(crate) const DIRSTATE_V2_REQUIREMENT: &str = "exp-dirstate-v2";
+pub(crate) const DIRSTATE_V2_REQUIREMENT: &str = "dirstate-v2";
 
 /// When narrowing is finalized and no longer subject to format changes,
 /// we should move this to just "narrow" or similar.
--- a/tests/test-basic.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-basic.t	Wed Oct 20 00:57:02 2021 +0200
@@ -6,7 +6,7 @@
   devel.all-warnings=true
   devel.default-date=0 0
   extensions.fsmonitor= (fsmonitor !)
-  format.exp-dirstate-v2=1 (dirstate-v2 !)
+  format.exp-rc-dirstate-v2=1 (dirstate-v2 !)
   largefiles.usercache=$TESTTMP/.cache/largefiles
   lfs.usercache=$TESTTMP/.cache/lfs
   ui.slash=True
--- a/tests/test-commandserver.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-commandserver.t	Wed Oct 20 00:57:02 2021 +0200
@@ -218,7 +218,7 @@
   devel.all-warnings=true
   devel.default-date=0 0
   extensions.fsmonitor= (fsmonitor !)
-  format.exp-dirstate-v2=1 (dirstate-v2 !)
+  format.exp-rc-dirstate-v2=1 (dirstate-v2 !)
   largefiles.usercache=$TESTTMP/.cache/largefiles
   lfs.usercache=$TESTTMP/.cache/lfs
   ui.slash=True
--- a/tests/test-dirstate-race.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-dirstate-race.t	Wed Oct 20 00:57:02 2021 +0200
@@ -3,7 +3,7 @@
 #if dirstate-v2
   $ cat >> $HGRCPATH << EOF
   > [format]
-  > exp-dirstate-v2=1
+  > exp-rc-dirstate-v2=1
   > [storage]
   > dirstate-v2.slow-path=allow
   > EOF
--- a/tests/test-dirstate-race2.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-dirstate-race2.t	Wed Oct 20 00:57:02 2021 +0200
@@ -3,7 +3,7 @@
 #if dirstate-v2
   $ cat >> $HGRCPATH << EOF
   > [format]
-  > exp-dirstate-v2=1
+  > exp-rc-dirstate-v2=1
   > [storage]
   > dirstate-v2.slow-path=allow
   > EOF
--- a/tests/test-dirstate.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-dirstate.t	Wed Oct 20 00:57:02 2021 +0200
@@ -3,7 +3,7 @@
 #if dirstate-v2
   $ cat >> $HGRCPATH << EOF
   > [format]
-  > exp-dirstate-v2=1
+  > exp-rc-dirstate-v2=1
   > [storage]
   > dirstate-v2.slow-path=allow
   > EOF
--- a/tests/test-hgignore.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-hgignore.t	Wed Oct 20 00:57:02 2021 +0200
@@ -3,7 +3,7 @@
 #if dirstate-v2
   $ cat >> $HGRCPATH << EOF
   > [format]
-  > exp-dirstate-v2=1
+  > exp-rc-dirstate-v2=1
   > [storage]
   > dirstate-v2.slow-path=allow
   > EOF
--- a/tests/test-init.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-init.t	Wed Oct 20 00:57:02 2021 +0200
@@ -19,7 +19,7 @@
   store created
   00changelog.i created
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   persistent-nodemap (rust !)
@@ -61,7 +61,7 @@
 
   $ hg --config format.usestore=false init old
   $ checknewrepo old
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   generaldelta
   persistent-nodemap (rust !)
   revlog-compression-zstd (zstd !)
@@ -75,7 +75,7 @@
   $ checknewrepo old2
   store created
   00changelog.i created
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   generaldelta
   persistent-nodemap (rust !)
   revlog-compression-zstd (zstd !)
@@ -90,7 +90,7 @@
   $ checknewrepo old3
   store created
   00changelog.i created
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   persistent-nodemap (rust !)
@@ -107,7 +107,7 @@
   store created
   00changelog.i created
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   persistent-nodemap (rust !)
   revlog-compression-zstd (zstd !)
@@ -226,7 +226,7 @@
   store created
   00changelog.i created
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   persistent-nodemap (rust !)
@@ -249,7 +249,7 @@
   store created
   00changelog.i created
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   persistent-nodemap (rust !)
@@ -268,7 +268,7 @@
   store created
   00changelog.i created
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   persistent-nodemap (rust !)
--- a/tests/test-lfconvert.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-lfconvert.t	Wed Oct 20 00:57:02 2021 +0200
@@ -96,7 +96,7 @@
 "lfconvert" adds 'largefiles' to .hg/requires.
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   largefiles
--- a/tests/test-lfs-largefiles.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-lfs-largefiles.t	Wed Oct 20 00:57:02 2021 +0200
@@ -290,7 +290,7 @@
 
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   lfs
--- a/tests/test-narrow-clone-no-ellipsis.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-narrow-clone-no-ellipsis.t	Wed Oct 20 00:57:02 2021 +0200
@@ -24,7 +24,7 @@
   $ cd narrow
   $ cat .hg/requires | grep -v generaldelta
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   narrowhg-experimental
   persistent-nodemap (rust !)
--- a/tests/test-narrow-clone-stream.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-narrow-clone-stream.t	Wed Oct 20 00:57:02 2021 +0200
@@ -64,7 +64,7 @@
   $ cat .hg/requires
   dotencode (tree !)
   dotencode (flat-fncache !)
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache (tree !)
   fncache (flat-fncache !)
   generaldelta
--- a/tests/test-narrow-clone.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-narrow-clone.t	Wed Oct 20 00:57:02 2021 +0200
@@ -40,7 +40,7 @@
   $ cd narrow
   $ cat .hg/requires | grep -v generaldelta
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   narrowhg-experimental
   persistent-nodemap (rust !)
--- a/tests/test-narrow-sparse.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-narrow-sparse.t	Wed Oct 20 00:57:02 2021 +0200
@@ -58,7 +58,7 @@
 
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   narrowhg-experimental
--- a/tests/test-permissions.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-permissions.t	Wed Oct 20 00:57:02 2021 +0200
@@ -5,7 +5,7 @@
 #if dirstate-v2
   $ cat >> $HGRCPATH << EOF
   > [format]
-  > exp-dirstate-v2=1
+  > exp-rc-dirstate-v2=1
   > [storage]
   > dirstate-v2.slow-path=allow
   > EOF
--- a/tests/test-persistent-nodemap.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-persistent-nodemap.t	Wed Oct 20 00:57:02 2021 +0200
@@ -800,7 +800,7 @@
   requirements
      preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !)
      preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !)
-     preserved: dotencode, exp-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !)
+     preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !)
      removed: persistent-nodemap
   
   processed revlogs:
@@ -844,7 +844,7 @@
   requirements
      preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !)
      preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !)
-     preserved: dotencode, exp-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !)
+     preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !)
      added: persistent-nodemap
   
   processed revlogs:
@@ -876,7 +876,7 @@
   requirements
      preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !)
      preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !)
-     preserved: dotencode, exp-dirstate-v2, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !)
+     preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !)
   
   optimisations: re-delta-all
   
--- a/tests/test-phases.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-phases.t	Wed Oct 20 00:57:02 2021 +0200
@@ -884,7 +884,7 @@
   $ cd no-internal-phase
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   persistent-nodemap (rust !)
@@ -913,7 +913,7 @@
   $ cd internal-phase
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   internal-phase
--- a/tests/test-purge.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-purge.t	Wed Oct 20 00:57:02 2021 +0200
@@ -3,7 +3,7 @@
 #if dirstate-v2
   $ cat >> $HGRCPATH << EOF
   > [format]
-  > exp-dirstate-v2=1
+  > exp-rc-dirstate-v2=1
   > [storage]
   > dirstate-v2.slow-path=allow
   > EOF
--- a/tests/test-remotefilelog-clone-tree.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-remotefilelog-clone-tree.t	Wed Oct 20 00:57:02 2021 +0200
@@ -27,7 +27,7 @@
   $ cd shallow
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   exp-remotefilelog-repo-req-1
   fncache
   generaldelta
@@ -71,7 +71,7 @@
   $ cd shallow2
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   exp-remotefilelog-repo-req-1
   fncache
   generaldelta
@@ -115,7 +115,7 @@
   $ ls shallow3/.hg/store/data
   $ cat shallow3/.hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   exp-remotefilelog-repo-req-1
   fncache
   generaldelta
--- a/tests/test-remotefilelog-clone.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-remotefilelog-clone.t	Wed Oct 20 00:57:02 2021 +0200
@@ -24,7 +24,7 @@
   $ cd shallow
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   exp-remotefilelog-repo-req-1
   fncache
   generaldelta
@@ -61,7 +61,7 @@
   $ cd shallow2
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   exp-remotefilelog-repo-req-1
   fncache
   generaldelta
@@ -113,7 +113,7 @@
   $ ls shallow3/.hg/store/data
   $ cat shallow3/.hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   exp-remotefilelog-repo-req-1
   fncache
   generaldelta
--- a/tests/test-remotefilelog-log.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-remotefilelog-log.t	Wed Oct 20 00:57:02 2021 +0200
@@ -27,7 +27,7 @@
   $ cd shallow
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   exp-remotefilelog-repo-req-1
   fncache
   generaldelta
--- a/tests/test-repo-compengines.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-repo-compengines.t	Wed Oct 20 00:57:02 2021 +0200
@@ -11,7 +11,7 @@
   $ cd default
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   persistent-nodemap (rust !)
@@ -61,7 +61,7 @@
 
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   persistent-nodemap (rust !)
@@ -81,7 +81,7 @@
   $ cd zstd
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   persistent-nodemap (rust !)
@@ -186,7 +186,7 @@
   $ cat none-compression/.hg/requires
   dotencode
   exp-compression-none
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   persistent-nodemap (rust !)
--- a/tests/test-requires.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-requires.t	Wed Oct 20 00:57:02 2021 +0200
@@ -50,7 +50,7 @@
   > EOF
   $ hg -R supported debugrequirements
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   featuresetup-test
   fncache
   generaldelta
--- a/tests/test-revlog-v2.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-revlog-v2.t	Wed Oct 20 00:57:02 2021 +0200
@@ -22,7 +22,7 @@
   $ cd new-repo
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   exp-revlogv2.2
   fncache
   generaldelta
--- a/tests/test-share-safe.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-share-safe.t	Wed Oct 20 00:57:02 2021 +0200
@@ -19,7 +19,7 @@
   $ hg init source
   $ cd source
   $ cat .hg/requires
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   share-safe
   $ cat .hg/store/requires
   dotencode
@@ -30,7 +30,7 @@
   store
   $ hg debugrequirements
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   revlogv1
@@ -54,13 +54,13 @@
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ cd shared1
   $ cat .hg/requires
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   share-safe
   shared
 
   $ hg debugrequirements -R ../source
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   revlogv1
@@ -70,7 +70,7 @@
 
   $ hg debugrequirements
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   revlogv1
@@ -225,7 +225,7 @@
   
   requirements
      preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-dirstate-v2 !)
-     preserved: dotencode, exp-dirstate-v2, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (dirstate-v2 !)
+     preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (dirstate-v2 !)
      added: revlog-compression-zstd
   
   processed revlogs:
@@ -253,8 +253,8 @@
   requirements
      preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !)
      preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !)
-     preserved: dotencode, exp-dirstate-v2, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd dirstate-v2 !)
-     preserved: dotencode, exp-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !)
+     preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd dirstate-v2 !)
+     preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !)
      added: persistent-nodemap
   
   processed revlogs:
@@ -327,7 +327,7 @@
   $ cd non-share-safe
   $ hg debugrequirements
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   revlogv1
@@ -346,7 +346,7 @@
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg debugrequirements -R nss-share
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   revlogv1
@@ -360,7 +360,7 @@
   $ hg debugupgraderepo -q
   requirements
      preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !)
-     preserved: dotencode, exp-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !)
+     preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !)
      added: share-safe
   
   processed revlogs:
@@ -373,7 +373,7 @@
   
   requirements
      preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !)
-     preserved: dotencode, exp-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !)
+     preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !)
      added: share-safe
   
   share-safe
@@ -394,7 +394,7 @@
 
   $ hg debugrequirements
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   revlogv1
@@ -403,7 +403,7 @@
   store
 
   $ cat .hg/requires
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   share-safe
 
   $ cat .hg/store/requires
@@ -454,7 +454,7 @@
   $ hg debugupgraderepo -q
   requirements
      preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !)
-     preserved: dotencode, exp-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !)
+     preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !)
      removed: share-safe
   
   processed revlogs:
@@ -467,7 +467,7 @@
   
   requirements
      preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !)
-     preserved: dotencode, exp-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !)
+     preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !)
      removed: share-safe
   
   processed revlogs:
@@ -485,7 +485,7 @@
 
   $ hg debugrequirements
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   revlogv1
@@ -494,7 +494,7 @@
 
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   revlogv1
@@ -553,7 +553,7 @@
   
   requirements
      preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !)
-     preserved: dotencode, exp-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !)
+     preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !)
      added: share-safe
   
   processed revlogs:
@@ -564,7 +564,7 @@
   repository upgraded to share safe mode, existing shares will still work in old non-safe mode. Re-share existing shares to use them in safe mode New shares will be created in safe mode.
   $ hg debugrequirements
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   revlogv1
--- a/tests/test-sparse-requirement.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-sparse-requirement.t	Wed Oct 20 00:57:02 2021 +0200
@@ -18,7 +18,7 @@
 
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   persistent-nodemap (rust !)
@@ -38,7 +38,7 @@
 
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   exp-sparse
   fncache
   generaldelta
@@ -61,7 +61,7 @@
 
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   persistent-nodemap (rust !)
--- a/tests/test-sqlitestore.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-sqlitestore.t	Wed Oct 20 00:57:02 2021 +0200
@@ -15,7 +15,7 @@
   $ hg init empty-no-sqlite
   $ cat empty-no-sqlite/.hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   persistent-nodemap (rust !)
@@ -29,7 +29,7 @@
   $ hg --config storage.new-repo-backend=sqlite init empty-sqlite
   $ cat empty-sqlite/.hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   exp-sqlite-001
   exp-sqlite-comp-001=zstd (zstd !)
   exp-sqlite-comp-001=$BUNDLE2_COMPRESSIONS$ (no-zstd !)
@@ -51,7 +51,7 @@
   $ hg --config storage.sqlite.compression=zlib init empty-zlib
   $ cat empty-zlib/.hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   exp-sqlite-001
   exp-sqlite-comp-001=$BUNDLE2_COMPRESSIONS$
   fncache
@@ -67,7 +67,7 @@
   $ hg --config storage.sqlite.compression=none init empty-none
   $ cat empty-none/.hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   exp-sqlite-001
   exp-sqlite-comp-001=none
   fncache
--- a/tests/test-status.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-status.t	Wed Oct 20 00:57:02 2021 +0200
@@ -3,7 +3,7 @@
 #if dirstate-v2
   $ cat >> $HGRCPATH << EOF
   > [format]
-  > exp-dirstate-v2=1
+  > exp-rc-dirstate-v2=1
   > [storage]
   > dirstate-v2.slow-path=allow
   > EOF
--- a/tests/test-stream-bundle-v2.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-stream-bundle-v2.t	Wed Oct 20 00:57:02 2021 +0200
@@ -48,12 +48,12 @@
   stream2 -- {bytecount: 1693, filecount: 11, requirements: dotencode%2Cfncache%2Cgeneraldelta%2Crevlogv1%2Csparserevlog%2Cstore} (mandatory: True) (no-zstd !)
   stream2 -- {bytecount: 1693, filecount: 11, requirements: dotencode%2Cfncache%2Cgeneraldelta%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog%2Cstore} (mandatory: True) (zstd no-rust !)
   stream2 -- {bytecount: 1693, filecount: 11, requirements: dotencode%2Cfncache%2Cgeneraldelta%2Cpersistent-nodemap%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog%2Cstore} (mandatory: True) (rust no-dirstate-v2 !)
-  stream2 -- {bytecount: 1693, filecount: 11, requirements: dotencode%2Cexp-dirstate-v2%2Cfncache%2Cgeneraldelta%2Cpersistent-nodemap%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog%2Cstore} (mandatory: True) (dirstate-v2 !)
+  stream2 -- {bytecount: 1693, filecount: 11, requirements: dotencode%2Cexp-rc-dirstate-v2%2Cfncache%2Cgeneraldelta%2Cpersistent-nodemap%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog%2Cstore} (mandatory: True) (dirstate-v2 !)
   $ hg debugbundle --spec bundle.hg
   none-v2;stream=v2;requirements%3Ddotencode%2Cfncache%2Cgeneraldelta%2Crevlogv1%2Csparserevlog%2Cstore (no-zstd !)
   none-v2;stream=v2;requirements%3Ddotencode%2Cfncache%2Cgeneraldelta%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog%2Cstore (zstd no-rust !)
   none-v2;stream=v2;requirements%3Ddotencode%2Cfncache%2Cgeneraldelta%2Cpersistent-nodemap%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog%2Cstore (rust no-dirstate-v2 !)
-  none-v2;stream=v2;requirements%3Ddotencode%2Cexp-dirstate-v2%2Cfncache%2Cgeneraldelta%2Cpersistent-nodemap%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog%2Cstore (dirstate-v2 !)
+  none-v2;stream=v2;requirements%3Ddotencode%2Cexp-rc-dirstate-v2%2Cfncache%2Cgeneraldelta%2Cpersistent-nodemap%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog%2Cstore (dirstate-v2 !)
 
 Test that we can apply the bundle as a stream clone bundle
 
--- a/tests/test-symlinks.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-symlinks.t	Wed Oct 20 00:57:02 2021 +0200
@@ -5,7 +5,7 @@
 #if dirstate-v2
   $ cat >> $HGRCPATH << EOF
   > [format]
-  > exp-dirstate-v2=1
+  > exp-rc-dirstate-v2=1
   > [storage]
   > dirstate-v2.slow-path=allow
   > EOF
--- a/tests/test-upgrade-repo.t	Mon Nov 01 14:59:07 2021 -0400
+++ b/tests/test-upgrade-repo.t	Wed Oct 20 00:57:02 2021 +0200
@@ -1638,7 +1638,7 @@
 
 Upgrade to dirstate-v2
 
-  $ hg debugformat -v --config format.exp-dirstate-v2=1
+  $ hg debugformat -v --config format.exp-rc-dirstate-v2=1
   format-variant     repo config default
   fncache:            yes    yes     yes
   dirstate-v2:         no    yes      no
@@ -1653,12 +1653,12 @@
   plain-cl-delta:     yes    yes     yes
   compression:        zstd   zstd    zstd
   compression-level:  default default default
-  $ hg debugupgraderepo --config format.exp-dirstate-v2=1 --run
+  $ hg debugupgraderepo --config format.exp-rc-dirstate-v2=1 --run
   upgrade will perform the following actions:
   
   requirements
      preserved: dotencode, exp-revlogv2.2, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, sparserevlog, store
-     added: exp-dirstate-v2
+     added: dirstate-v2
   
   dirstate-v2
      "hg status" will be faster
@@ -1703,7 +1703,7 @@
   
   requirements
      preserved: dotencode, exp-revlogv2.2, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, sparserevlog, store
-     removed: exp-dirstate-v2
+     removed: dirstate-v2
   
   processed revlogs:
     - all-filelogs