Mercurial > hg
changeset 52049:a8cf6a852f11
rust-dirstate: pass dirstate tracked key from the requirements
We will make use of this with the `hg update` fastpath
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Wed, 02 Oct 2024 18:31:32 +0200 |
parents | 78fc666a3e94 |
children | de317a87ea6a |
files | rust/hg-core/src/dirstate_tree/dirstate_map.rs rust/hg-core/src/dirstate_tree/on_disk.rs rust/hg-core/src/repo.rs |
diffstat | 3 files changed, 19 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/rust/hg-core/src/dirstate_tree/dirstate_map.rs Wed Oct 02 13:39:43 2024 +0200 +++ b/rust/hg-core/src/dirstate_tree/dirstate_map.rs Wed Oct 02 18:31:32 2024 +0200 @@ -88,6 +88,9 @@ /// Controlled by config option `devel.dirstate.v2.data_update_mode` pub(super) write_mode: DirstateMapWriteMode, + + /// Controlled by config option `format.use-dirstate-tracked-hint` + pub(super) use_tracked_hint: bool, } /// Using a plain `HgPathBuf` of the full path from the repository root as a @@ -471,6 +474,7 @@ identity: None, dirstate_version: DirstateVersion::V1, write_mode: DirstateMapWriteMode::Auto, + use_tracked_hint: false, } } @@ -960,6 +964,10 @@ pub(crate) fn set_write_mode(&mut self, write_mode: DirstateMapWriteMode) { self.write_mode = write_mode; } + + pub(crate) fn set_tracked_hint(&mut self, tracked_hint: bool) { + self.use_tracked_hint = tracked_hint; + } } /// Sets the parameters for resetting a dirstate entry
--- a/rust/hg-core/src/dirstate_tree/on_disk.rs Wed Oct 02 13:39:43 2024 +0200 +++ b/rust/hg-core/src/dirstate_tree/on_disk.rs Wed Oct 02 18:31:32 2024 +0200 @@ -317,6 +317,7 @@ identity, dirstate_version: DirstateVersion::V2, write_mode: DirstateMapWriteMode::Auto, + use_tracked_hint: false, }; Ok(dirstate_map) }
--- a/rust/hg-core/src/repo.rs Wed Oct 02 13:39:43 2024 +0200 +++ b/rust/hg-core/src/repo.rs Wed Oct 02 18:31:32 2024 +0200 @@ -9,8 +9,9 @@ use crate::lock::{try_with_lock_no_wait, LockError}; use crate::manifest::{Manifest, Manifestlog}; use crate::requirements::{ - CHANGELOGV2_REQUIREMENT, GENERALDELTA_REQUIREMENT, NODEMAP_REQUIREMENT, - REVLOGV1_REQUIREMENT, REVLOGV2_REQUIREMENT, + CHANGELOGV2_REQUIREMENT, DIRSTATE_TRACKED_HINT_V1, + GENERALDELTA_REQUIREMENT, NODEMAP_REQUIREMENT, REVLOGV1_REQUIREMENT, + REVLOGV2_REQUIREMENT, }; use crate::revlog::filelog::Filelog; use crate::revlog::RevlogError; @@ -547,7 +548,13 @@ _ => DirstateMapWriteMode::Auto, }; - map.with_dmap_mut(|m| m.set_write_mode(write_mode)); + let tracked_hint = + self.requirements().contains(DIRSTATE_TRACKED_HINT_V1); + + map.with_dmap_mut(|m| { + m.set_write_mode(write_mode); + m.set_tracked_hint(tracked_hint); + }); Ok(map) }