diff rust/hg-core/src/dirstate_tree/dispatch.rs @ 47280:1766130fe9ba

dirstate-v2: Change the on-disk format when the requirement is enabled For now, the format is the same except with an additional marker at the start. This marker is redundant: for existing repositories it is `.hg/requires` that determines which format to use. For new repositories, it is the new `format.exp-dirstate-v2` config. There is no upgrade or downgrade so far. Most of the changes are about plumbing a boolean through layers of APIs to indicate which format should be used. Differential Revision: https://phab.mercurial-scm.org/D10719
author Simon Sapin <simon.sapin@octobus.net>
date Wed, 19 May 2021 13:15:00 +0200
parents cd8ca38fccff
children 4ee9f419c52e
line wrap: on
line diff
--- a/rust/hg-core/src/dirstate_tree/dispatch.rs	Wed May 19 13:15:00 2021 +0200
+++ b/rust/hg-core/src/dirstate_tree/dispatch.rs	Wed May 19 13:15:00 2021 +0200
@@ -73,7 +73,13 @@
         directory: &HgPath,
     ) -> Result<bool, DirstateMapError>;
 
-    fn pack(
+    fn pack_v1(
+        &mut self,
+        parents: DirstateParents,
+        now: Timestamp,
+    ) -> Result<Vec<u8>, DirstateError>;
+
+    fn pack_v2(
         &mut self,
         parents: DirstateParents,
         now: Timestamp,
@@ -211,7 +217,7 @@
         self.has_dir(directory)
     }
 
-    fn pack(
+    fn pack_v1(
         &mut self,
         parents: DirstateParents,
         now: Timestamp,
@@ -219,6 +225,16 @@
         self.pack(parents, now)
     }
 
+    fn pack_v2(
+        &mut self,
+        _parents: DirstateParents,
+        _now: Timestamp,
+    ) -> Result<Vec<u8>, DirstateError> {
+        panic!(
+            "should have used dirstate_tree::DirstateMap to use the v2 format"
+        )
+    }
+
     fn set_all_dirs(&mut self) -> Result<(), DirstateMapError> {
         self.set_all_dirs()
     }