Mercurial > hg
changeset 48190:0cc0c0972164
dirstate-v2: Only convert from SystemTime to Timestamp and not back
Converting from Timestamp back to SystemTime was only used for equality
comparison, but this can also be done on Timestamp values.
Differential Revision: https://phab.mercurial-scm.org/D11631
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Tue, 12 Oct 2021 15:29:05 +0200 |
parents | 6e01bcd111d2 |
children | a5a673ec8f6f |
files | rust/hg-core/src/dirstate_tree/on_disk.rs rust/hg-core/src/dirstate_tree/status.rs |
diffstat | 2 files changed, 3 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/rust/hg-core/src/dirstate_tree/on_disk.rs Fri Oct 08 12:57:24 2021 +0200 +++ b/rust/hg-core/src/dirstate_tree/on_disk.rs Tue Oct 12 15:29:05 2021 +0200 @@ -15,7 +15,7 @@ use format_bytes::format_bytes; use std::borrow::Cow; use std::convert::{TryFrom, TryInto}; -use std::time::{Duration, SystemTime, UNIX_EPOCH}; +use std::time::{SystemTime, UNIX_EPOCH}; /// Added at the start of `.hg/dirstate` when the "v2" format is used. /// This a redundant sanity check more than an actual "magic number" since @@ -462,18 +462,6 @@ } } -impl From<&'_ Timestamp> for SystemTime { - fn from(timestamp: &'_ Timestamp) -> Self { - let secs = timestamp.seconds.get(); - let nanos = timestamp.nanoseconds.get(); - if secs >= 0 { - UNIX_EPOCH + Duration::new(secs as u64, nanos) - } else { - UNIX_EPOCH - Duration::new((-secs) as u64, nanos) - } - } -} - fn read_hg_path( on_disk: &[u8], slice: PathSlice,
--- a/rust/hg-core/src/dirstate_tree/status.rs Fri Oct 08 12:57:24 2021 +0200 +++ b/rust/hg-core/src/dirstate_tree/status.rs Tue Oct 12 15:29:05 2021 +0200 @@ -199,7 +199,8 @@ // directory eligible for `read_dir` caching. if let Some(meta) = directory_metadata { if let Ok(current_mtime) = meta.modified() { - if current_mtime == cached_mtime.into() { + let current_mtime = Timestamp::from(current_mtime); + if current_mtime == *cached_mtime { // The mtime of that directory has not changed // since then, which means that the results of // `read_dir` should also be unchanged.