[Updated] D12526: rust-dirstatemap: add `set_cached_mtime` helper method
Alphare (Raphaël Gomès)
phabricator at mercurial-scm.org
Tue Apr 19 21:55:55 UTC 2022
Closed by commit rHG464747faef14: rust-dirstatemap: add `set_cached_mtime` helper method (authored by Alphare).
This revision was automatically updated to reflect the committed changes.
This revision was not accepted when it landed; it landed in state "Needs Review".
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D12526?vs=33089&id=33280
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D12526/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D12526
AFFECTED FILES
rust/hg-core/src/dirstate_tree/dirstate_map.rs
rust/hg-core/src/dirstate_tree/status.rs
CHANGE DETAILS
diff --git a/rust/hg-core/src/dirstate_tree/status.rs b/rust/hg-core/src/dirstate_tree/status.rs
--- a/rust/hg-core/src/dirstate_tree/status.rs
+++ b/rust/hg-core/src/dirstate_tree/status.rs
@@ -4,7 +4,6 @@
use crate::dirstate_tree::dirstate_map::BorrowedPath;
use crate::dirstate_tree::dirstate_map::ChildNodesRef;
use crate::dirstate_tree::dirstate_map::DirstateMap;
-use crate::dirstate_tree::dirstate_map::NodeData;
use crate::dirstate_tree::dirstate_map::NodeRef;
use crate::dirstate_tree::on_disk::DirstateV2ParseError;
use crate::matchers::get_ignore_function;
@@ -143,13 +142,7 @@
dmap.clear_cached_mtime(path)?;
}
for (path, mtime) in &new_cachable {
- let node = dmap.get_or_insert(path)?;
- match &node.data {
- NodeData::Entry(_) => {} // Don’t overwrite an entry
- NodeData::CachedDirectory { .. } | NodeData::None => {
- node.data = NodeData::CachedDirectory { mtime: *mtime }
- }
- }
+ dmap.set_cached_mtime(path, *mtime)?;
}
Ok((outcome, warnings))
diff --git a/rust/hg-core/src/dirstate_tree/dirstate_map.rs b/rust/hg-core/src/dirstate_tree/dirstate_map.rs
--- a/rust/hg-core/src/dirstate_tree/dirstate_map.rs
+++ b/rust/hg-core/src/dirstate_tree/dirstate_map.rs
@@ -823,6 +823,30 @@
Ok(())
}
+ /// Sets the cached mtime for the (potential) folder at `path`.
+ pub(super) fn set_cached_mtime(
+ &mut self,
+ path: &HgPath,
+ mtime: TruncatedTimestamp,
+ ) -> Result<(), DirstateV2ParseError> {
+ let node = match DirstateMap::get_node_mut(
+ self.on_disk,
+ &mut self.unreachable_bytes,
+ &mut self.root,
+ path,
+ )? {
+ Some(node) => node,
+ None => return Ok(()),
+ };
+ match &node.data {
+ NodeData::Entry(_) => {} // Don’t overwrite an entry
+ NodeData::CachedDirectory { .. } | NodeData::None => {
+ node.data = NodeData::CachedDirectory { mtime }
+ }
+ }
+ Ok(())
+ }
+
fn iter_nodes<'tree>(
&'tree self,
) -> impl Iterator<
To: Alphare, #hg-reviewers
Cc: mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20220419/3644b88b/attachment-0002.html>
More information about the Mercurial-patches
mailing list