Patchwork D11709: dirstate-v2: freeze the on-disk format

login
register
mail settings
Submitter phabricator
Date Oct. 20, 2021, 11 a.m.
Message ID <differential-rev-PHID-DREV-ziczecukxecuwgl4x76n-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/50033/
State Superseded
Headers show

Comments

phabricator - Oct. 20, 2021, 11 a.m.
marmoute created this revision.
Herald added a reviewer: durin42.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
marmoute added a comment.


  Lets put the option on the table.

REVISION SUMMARY
  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)

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11709

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

CHANGE DETAILS




To: marmoute, durin42, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/tests/test-upgrade-repo.t b/tests/test-upgrade-repo.t
--- a/tests/test-upgrade-repo.t
+++ b/tests/test-upgrade-repo.t
@@ -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
diff --git a/tests/test-symlinks.t b/tests/test-symlinks.t
--- a/tests/test-symlinks.t
+++ b/tests/test-symlinks.t
@@ -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
diff --git a/tests/test-stream-bundle-v2.t b/tests/test-stream-bundle-v2.t
--- a/tests/test-stream-bundle-v2.t
+++ b/tests/test-stream-bundle-v2.t
@@ -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
 
diff --git a/tests/test-status.t b/tests/test-status.t
--- a/tests/test-status.t
+++ b/tests/test-status.t
@@ -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
diff --git a/tests/test-sqlitestore.t b/tests/test-sqlitestore.t
--- a/tests/test-sqlitestore.t
+++ b/tests/test-sqlitestore.t
@@ -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
diff --git a/tests/test-sparse-requirement.t b/tests/test-sparse-requirement.t
--- a/tests/test-sparse-requirement.t
+++ b/tests/test-sparse-requirement.t
@@ -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 !)
diff --git a/tests/test-share-safe.t b/tests/test-share-safe.t
--- a/tests/test-share-safe.t
+++ b/tests/test-share-safe.t
@@ -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
diff --git a/tests/test-revlog-v2.t b/tests/test-revlog-v2.t
--- a/tests/test-revlog-v2.t
+++ b/tests/test-revlog-v2.t
@@ -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
diff --git a/tests/test-requires.t b/tests/test-requires.t
--- a/tests/test-requires.t
+++ b/tests/test-requires.t
@@ -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
diff --git a/tests/test-repo-compengines.t b/tests/test-repo-compengines.t
--- a/tests/test-repo-compengines.t
+++ b/tests/test-repo-compengines.t
@@ -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 !)
diff --git a/tests/test-remotefilelog-log.t b/tests/test-remotefilelog-log.t
--- a/tests/test-remotefilelog-log.t
+++ b/tests/test-remotefilelog-log.t
@@ -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
diff --git a/tests/test-remotefilelog-clone.t b/tests/test-remotefilelog-clone.t
--- a/tests/test-remotefilelog-clone.t
+++ b/tests/test-remotefilelog-clone.t
@@ -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
diff --git a/tests/test-remotefilelog-clone-tree.t b/tests/test-remotefilelog-clone-tree.t
--- a/tests/test-remotefilelog-clone-tree.t
+++ b/tests/test-remotefilelog-clone-tree.t
@@ -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
diff --git a/tests/test-purge.t b/tests/test-purge.t
--- a/tests/test-purge.t
+++ b/tests/test-purge.t
@@ -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
diff --git a/tests/test-phases.t b/tests/test-phases.t
--- a/tests/test-phases.t
+++ b/tests/test-phases.t
@@ -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
diff --git a/tests/test-persistent-nodemap.t b/tests/test-persistent-nodemap.t
--- a/tests/test-persistent-nodemap.t
+++ b/tests/test-persistent-nodemap.t
@@ -840,7 +840,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:
@@ -884,7 +884,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:
@@ -916,7 +916,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
   
diff --git a/tests/test-permissions.t b/tests/test-permissions.t
--- a/tests/test-permissions.t
+++ b/tests/test-permissions.t
@@ -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
diff --git a/tests/test-narrow-sparse.t b/tests/test-narrow-sparse.t
--- a/tests/test-narrow-sparse.t
+++ b/tests/test-narrow-sparse.t
@@ -58,7 +58,7 @@ 
 
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   narrowhg-experimental
diff --git a/tests/test-narrow-clone.t b/tests/test-narrow-clone.t
--- a/tests/test-narrow-clone.t
+++ b/tests/test-narrow-clone.t
@@ -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 !)
diff --git a/tests/test-narrow-clone-stream.t b/tests/test-narrow-clone-stream.t
--- a/tests/test-narrow-clone-stream.t
+++ b/tests/test-narrow-clone-stream.t
@@ -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
diff --git a/tests/test-narrow-clone-no-ellipsis.t b/tests/test-narrow-clone-no-ellipsis.t
--- a/tests/test-narrow-clone-no-ellipsis.t
+++ b/tests/test-narrow-clone-no-ellipsis.t
@@ -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 !)
diff --git a/tests/test-lfs-largefiles.t b/tests/test-lfs-largefiles.t
--- a/tests/test-lfs-largefiles.t
+++ b/tests/test-lfs-largefiles.t
@@ -290,7 +290,7 @@ 
 
   $ cat .hg/requires
   dotencode
-  exp-dirstate-v2 (dirstate-v2 !)
+  exp-rc-dirstate-v2 (dirstate-v2 !)
   fncache
   generaldelta
   lfs
diff --git a/tests/test-lfconvert.t b/tests/test-lfconvert.t
--- a/tests/test-lfconvert.t
+++ b/tests/test-lfconvert.t
@@ -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
diff --git a/tests/test-init.t b/tests/test-init.t
--- a/tests/test-init.t
+++ b/tests/test-init.t
@@ -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 !)
diff --git a/tests/test-hgignore.t b/tests/test-hgignore.t
--- a/tests/test-hgignore.t
+++ b/tests/test-hgignore.t
@@ -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
diff --git a/tests/test-dirstate.t b/tests/test-dirstate.t
--- a/tests/test-dirstate.t
+++ b/tests/test-dirstate.t
@@ -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
diff --git a/tests/test-dirstate-race2.t b/tests/test-dirstate-race2.t
--- a/tests/test-dirstate-race2.t
+++ b/tests/test-dirstate-race2.t
@@ -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
diff --git a/tests/test-dirstate-race.t b/tests/test-dirstate-race.t
--- a/tests/test-dirstate-race.t
+++ b/tests/test-dirstate-race.t
@@ -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
diff --git a/tests/test-commandserver.t b/tests/test-commandserver.t
--- a/tests/test-commandserver.t
+++ b/tests/test-commandserver.t
@@ -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
diff --git a/tests/test-basic.t b/tests/test-basic.t
--- a/tests/test-basic.t
+++ b/tests/test-basic.t
@@ -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
diff --git a/rust/hg-core/src/requirements.rs b/rust/hg-core/src/requirements.rs
--- a/rust/hg-core/src/requirements.rs
+++ b/rust/hg-core/src/requirements.rs
@@ -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.
diff --git a/mercurial/upgrade_utils/actions.py b/mercurial/upgrade_utils/actions.py
--- a/mercurial/upgrade_utils/actions.py
+++ b/mercurial/upgrade_utils/actions.py
@@ -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 upgrade mechanism'
     )
 
     upgrademessage = _(b'"hg status" will be faster')
diff --git a/mercurial/requirements.py b/mercurial/requirements.py
--- a/mercurial/requirements.py
+++ b/mercurial/requirements.py
@@ -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.
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -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
diff --git a/mercurial/configitems.py b/mercurial/configitems.py
--- a/mercurial/configitems.py
+++ b/mercurial/configitems.py
@@ -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',