diff -r e8ea403b1c46 -r 288de6f5d724 rust/hg-core/src/dirstate_tree/on_disk.rs --- a/rust/hg-core/src/dirstate_tree/on_disk.rs Thu Jun 16 15:15:03 2022 +0200 +++ b/rust/hg-core/src/dirstate_tree/on_disk.rs Thu Jun 16 15:28:54 2022 +0200 @@ -2,7 +2,7 @@ //! //! See `mercurial/helptext/internals/dirstate-v2.txt` -use crate::dirstate::TruncatedTimestamp; +use crate::dirstate::{DirstateV2Data, TruncatedTimestamp}; use crate::dirstate_tree::dirstate_map::DirstateVersion; use crate::dirstate_tree::dirstate_map::{self, DirstateMap, NodeRef}; use crate::dirstate_tree::path_with_basename::WithBasename; @@ -85,7 +85,7 @@ /// Fields are documented in the *The data file format* /// section of `mercurial/helptext/internals/dirstate-v2.txt` -#[derive(BytesCast)] +#[derive(BytesCast, Debug)] #[repr(C)] pub(super) struct Node { full_path: PathSlice, @@ -125,7 +125,7 @@ } /// Duration since the Unix epoch -#[derive(BytesCast, Copy, Clone)] +#[derive(BytesCast, Copy, Clone, Debug)] #[repr(C)] struct PackedTruncatedTimestamp { truncated_seconds: U32Be, @@ -153,7 +153,7 @@ /// Always sorted by ascending `full_path`, to allow binary search. /// Since nodes with the same parent nodes also have the same parent path, /// only the `base_name`s need to be compared during binary search. -#[derive(BytesCast, Copy, Clone)] +#[derive(BytesCast, Copy, Clone, Debug)] #[repr(C)] struct ChildNodes { start: Offset, @@ -161,7 +161,7 @@ } /// A `HgPath` of `len` bytes -#[derive(BytesCast, Copy, Clone)] +#[derive(BytesCast, Copy, Clone, Debug)] #[repr(C)] struct PathSlice { start: Offset, @@ -417,7 +417,7 @@ fn assume_entry(&self) -> Result { // TODO: convert through raw bits instead? - let wdir_tracked = self.flags().contains(Flags::WDIR_TRACKED); + let wc_tracked = self.flags().contains(Flags::WDIR_TRACKED); let p1_tracked = self.flags().contains(Flags::P1_TRACKED); let p2_info = self.flags().contains(Flags::P2_INFO); let mode_size = if self.flags().contains(Flags::HAS_MODE_AND_SIZE) @@ -447,15 +447,15 @@ } else { None }; - Ok(DirstateEntry::from_v2_data( - wdir_tracked, + Ok(DirstateEntry::from_v2_data(DirstateV2Data { + wc_tracked, p1_tracked, p2_info, mode_size, mtime, fallback_exec, fallback_symlink, - )) + })) } pub(super) fn entry( @@ -495,18 +495,18 @@ fn from_dirstate_entry( entry: &DirstateEntry, ) -> (Flags, U32Be, PackedTruncatedTimestamp) { - let ( - wdir_tracked, + let DirstateV2Data { + wc_tracked, p1_tracked, p2_info, - mode_size_opt, - mtime_opt, + mode_size: mode_size_opt, + mtime: mtime_opt, fallback_exec, fallback_symlink, - ) = entry.v2_data(); - // TODO: convert throug raw flag bits instead? + } = entry.v2_data(); + // TODO: convert through raw flag bits instead? let mut flags = Flags::empty(); - flags.set(Flags::WDIR_TRACKED, wdir_tracked); + flags.set(Flags::WDIR_TRACKED, wc_tracked); flags.set(Flags::P1_TRACKED, p1_tracked); flags.set(Flags::P2_INFO, p2_info); let size = if let Some((m, s)) = mode_size_opt { @@ -592,7 +592,7 @@ ) -> Result<(), DirstateV2ParseError> { for node in read_nodes(on_disk, nodes)? { if let Some(entry) = node.entry()? { - if entry.state().is_tracked() { + if entry.tracked() { f(node.full_path(on_disk)?) } }