# HG changeset patch # User Pierre-Yves David # Date 2021-07-03 23:58:03 # Node ID d3cf20328abdb9b4d0000181fb1f6be782772c31 # Parent 80617f3c0f9aad33dc496c4b710230e668191f48 dirstate: infer the 'n' state from `from_p2` This flag is only used with 'n' so lets set the state based on that parameter in this case. Differential Revision: https://phab.mercurial-scm.org/D10971 diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py --- a/mercurial/dirstate.py +++ b/mercurial/dirstate.py @@ -543,7 +543,7 @@ class dirstate(object): 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 @@ class dirstatemap(object): 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 @@ impl DirstateMap { 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 @@ impl<'on_disk> super::dispatch::Dirstate 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 {