rust/hg-core/src/dirstate_tree/on_disk.rs
changeset 48254 b874e8d81a98
parent 48253 948570aa7630
child 48260 269ff8978086
--- 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)
     }
 }