diff rust/hg-core/src/repo.rs @ 50221:1891086f6c7f stable

dirstate: use more than a bool to control append behavior When writing dirstate-v2, we might either append to the existing file, or create a new file. We are about to introduce some configuration to control this behavior. As a prelude, we change the current way the behavior was automatically controlled to make the change smaller/clearer.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 24 Feb 2023 18:21:54 +0100
parents f5e4248e5bce
children ecd28d89c29e
line wrap: on
line diff
--- a/rust/hg-core/src/repo.rs	Fri Feb 24 01:15:45 2023 +0100
+++ b/rust/hg-core/src/repo.rs	Fri Feb 24 18:21:54 2023 +0100
@@ -1,6 +1,7 @@
 use crate::changelog::Changelog;
 use crate::config::{Config, ConfigError, ConfigParseError};
 use crate::dirstate::DirstateParents;
+use crate::dirstate_tree::dirstate_map::DirstateMapWriteMode;
 use crate::dirstate_tree::on_disk::Docket as DirstateDocket;
 use crate::dirstate_tree::owning::OwningDirstateMap;
 use crate::errors::HgResultExt;
@@ -436,9 +437,13 @@
                 .dirstate_data_file_uuid
                 .get_or_init(|| self.read_dirstate_data_file_uuid())?;
             let uuid_opt = uuid_opt.as_ref();
-            let can_append = uuid_opt.is_some();
+            let write_mode = if uuid_opt.is_some() {
+                DirstateMapWriteMode::Auto
+            } else {
+                DirstateMapWriteMode::ForceNewDataFile
+            };
             let (data, tree_metadata, append, old_data_size) =
-                map.pack_v2(can_append)?;
+                map.pack_v2(write_mode)?;
 
             // Reuse the uuid, or generate a new one, keeping the old for
             // deletion.