Mercurial > public > mercurial-scm > hg
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() }