--- a/rust/hg-core/src/dirstate/entry.rs Tue Nov 23 19:40:29 2021 +0100
+++ b/rust/hg-core/src/dirstate/entry.rs Tue Nov 23 20:04:22 2021 +0100
@@ -580,10 +580,8 @@
&self,
filesystem_metadata: &std::fs::Metadata,
) -> bool {
- use std::os::unix::fs::MetadataExt;
- const EXEC_BIT_MASK: u32 = 0o100;
- let dirstate_exec_bit = (self.mode() as u32) & EXEC_BIT_MASK;
- let fs_exec_bit = filesystem_metadata.mode() & EXEC_BIT_MASK;
+ let dirstate_exec_bit = (self.mode() as u32 & EXEC_BIT_MASK) != 0;
+ let fs_exec_bit = has_exec_bit(filesystem_metadata);
dirstate_exec_bit != fs_exec_bit
}
@@ -641,3 +639,11 @@
}
}
}
+
+const EXEC_BIT_MASK: u32 = 0o100;
+
+pub fn has_exec_bit(metadata: &std::fs::Metadata) -> bool {
+ // TODO: How to handle executable permissions on Windows?
+ use std::os::unix::fs::MetadataExt;
+ (metadata.mode() & EXEC_BIT_MASK) != 0
+}