diff -r e9faae0f445c -r 1730b2fceaa1 mercurial/pure/parsers.py --- a/mercurial/pure/parsers.py Tue Oct 19 10:52:13 2021 +0100 +++ b/mercurial/pure/parsers.py Fri Oct 15 16:12:00 2021 +0200 @@ -53,6 +53,7 @@ _DIRSTATE_V2_HAS_DIRCTORY_MTIME = 1 << 5 # Unused when Rust is not available DIRSTATE_V2_MODE_EXEC_PERM = 1 << 6 DIRSTATE_V2_MODE_IS_SYMLINK = 1 << 7 +DIRSTATE_V2_EXPECTED_STATE_IS_MODIFIED = 1 << 8 @attr.s(slots=True, init=False) @@ -123,7 +124,15 @@ def from_v2_data(cls, flags, size, mtime): """Build a new DirstateItem object from V2 data""" has_mode_size = bool(flags & DIRSTATE_V2_HAS_MODE_AND_SIZE) + has_meaningful_mtime = bool(flags & DIRSTATE_V2_HAS_FILE_MTIME) mode = None + + if flags & +DIRSTATE_V2_EXPECTED_STATE_IS_MODIFIED: + # we do not have support for this flag in the code yet, + # force a lookup for this file. + has_mode_size = False + has_meaningful_mtime = False + if has_mode_size: assert stat.S_IXUSR == 0o100 if flags & DIRSTATE_V2_MODE_EXEC_PERM: @@ -139,7 +148,7 @@ p1_tracked=bool(flags & DIRSTATE_V2_P1_TRACKED), p2_info=bool(flags & DIRSTATE_V2_P2_INFO), has_meaningful_data=has_mode_size, - has_meaningful_mtime=bool(flags & DIRSTATE_V2_HAS_FILE_MTIME), + has_meaningful_mtime=has_meaningful_mtime, parentfiledata=(mode, size, mtime), )