diff --git a/mercurial/pure/parsers.py b/mercurial/pure/parsers.py --- a/mercurial/pure/parsers.py +++ b/mercurial/pure/parsers.py @@ -156,7 +156,7 @@ if size == FROM_P2: return cls(wc_tracked=True, p2_info=True) elif size == NONNORMAL: - return cls.new_possibly_dirty() + return cls(wc_tracked=True, p1_tracked=True) elif mtime == AMBIGUOUS_TIME: instance = cls.new_normal(mode, size, 42) instance._mtime = None diff --git a/rust/hg-core/src/dirstate/entry.rs b/rust/hg-core/src/dirstate/entry.rs --- a/rust/hg-core/src/dirstate/entry.rs +++ b/rust/hg-core/src/dirstate/entry.rs @@ -75,7 +75,11 @@ mtime: None, } } else if size == SIZE_NON_NORMAL { - Self::new_possibly_dirty() + Self { + flags: Flags::WDIR_TRACKED | Flags::P1_TRACKED, + mode_size: None, + mtime: None, + } } else if mtime == MTIME_UNSET { Self { flags: Flags::WDIR_TRACKED | Flags::P1_TRACKED,