diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py --- a/mercurial/dirstate.py +++ b/mercurial/dirstate.py @@ -543,7 +543,7 @@ self._addpath(f, merged=True) else: # add-like - self._addpath(f, b'n', 0, from_p2=True) + self._addpath(f, from_p2=True) self._map.copymap.pop(f, None) def add(self, f): diff --git a/mercurial/dirstatemap.py b/mercurial/dirstatemap.py --- a/mercurial/dirstatemap.py +++ b/mercurial/dirstatemap.py @@ -172,6 +172,7 @@ mtime = AMBIGUOUS_TIME elif from_p2: assert not possibly_dirty + state = b'n' size = FROM_P2 mtime = AMBIGUOUS_TIME elif possibly_dirty: diff --git a/rust/hg-core/src/dirstate/dirstate_map.rs b/rust/hg-core/src/dirstate/dirstate_map.rs --- a/rust/hg-core/src/dirstate/dirstate_map.rs +++ b/rust/hg-core/src/dirstate/dirstate_map.rs @@ -91,6 +91,7 @@ entry.mtime = MTIME_UNSET; } else if from_p2 { assert!(!possibly_dirty); + entry.state = EntryState::Normal; entry.size = SIZE_FROM_OTHER_PARENT; entry.mtime = MTIME_UNSET; } else if possibly_dirty { diff --git a/rust/hg-core/src/dirstate_tree/dirstate_map.rs b/rust/hg-core/src/dirstate_tree/dirstate_map.rs --- a/rust/hg-core/src/dirstate_tree/dirstate_map.rs +++ b/rust/hg-core/src/dirstate_tree/dirstate_map.rs @@ -742,6 +742,7 @@ entry.mtime = MTIME_UNSET; } else if from_p2 { assert!(!possibly_dirty); + entry.state = EntryState::Normal; entry.size = SIZE_FROM_OTHER_PARENT; entry.mtime = MTIME_UNSET; } else if possibly_dirty {