Mercurial > hg
diff rust/hg-core/src/dirstate_tree/on_disk.rs @ 48254:b874e8d81a98
dirstate-v2: preserve the fallback values on disk
When the fallback values are set, they are now read and written to disk.
See format documentation for details.
Differential Revision: https://phab.mercurial-scm.org/D11688
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 18 Oct 2021 10:56:54 +0200 |
parents | 948570aa7630 |
children | 269ff8978086 |
line wrap: on
line diff
--- a/rust/hg-core/src/dirstate_tree/on_disk.rs Mon Oct 18 20:02:05 2021 +0200 +++ b/rust/hg-core/src/dirstate_tree/on_disk.rs Mon Oct 18 10:56:54 2021 +0200 @@ -113,6 +113,10 @@ const EXPECTED_STATE_IS_MODIFIED = 1 << 8; const ALL_UNKNOWN_RECORDED = 1 << 9; const ALL_IGNORED_RECORDED = 1 << 10; + const HAS_FALLBACK_EXEC = 1 << 11; + const FALLBACK_EXEC = 1 << 12; + const HAS_FALLBACK_SYMLINK = 1 << 13; + const FALLBACK_SYMLINK = 1 << 14; } } @@ -420,8 +424,15 @@ fn from_dirstate_entry( entry: &DirstateEntry, ) -> (Flags, U32Be, PackedTruncatedTimestamp) { - let (wdir_tracked, p1_tracked, p2_info, mode_size_opt, mtime_opt) = - entry.v2_data(); + let ( + wdir_tracked, + p1_tracked, + p2_info, + mode_size_opt, + mtime_opt, + fallback_exec, + fallback_symlink, + ) = entry.v2_data(); // TODO: convert throug raw flag bits instead? let mut flags = Flags::empty(); flags.set(Flags::WDIR_TRACKED, wdir_tracked); @@ -446,6 +457,18 @@ } else { PackedTruncatedTimestamp::null() }; + if let Some(f_exec) = fallback_exec { + flags.insert(Flags::HAS_FALLBACK_EXEC); + if f_exec { + flags.insert(Flags::FALLBACK_EXEC); + } + } + if let Some(f_symlink) = fallback_symlink { + flags.insert(Flags::HAS_FALLBACK_SYMLINK); + if f_symlink { + flags.insert(Flags::FALLBACK_SYMLINK); + } + } (flags, size, mtime) } }