changeset 47529:d3cf20328abd

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
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sun, 04 Jul 2021 01:58:03 +0200
parents 80617f3c0f9a
children a1745a292885
files mercurial/dirstate.py mercurial/dirstatemap.py rust/hg-core/src/dirstate/dirstate_map.rs rust/hg-core/src/dirstate_tree/dirstate_map.rs
diffstat 4 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/dirstate.py	Sun Jul 04 01:57:28 2021 +0200
+++ b/mercurial/dirstate.py	Sun Jul 04 01:58:03 2021 +0200
@@ -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):
--- a/mercurial/dirstatemap.py	Sun Jul 04 01:57:28 2021 +0200
+++ b/mercurial/dirstatemap.py	Sun Jul 04 01:58:03 2021 +0200
@@ -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:
--- a/rust/hg-core/src/dirstate/dirstate_map.rs	Sun Jul 04 01:57:28 2021 +0200
+++ b/rust/hg-core/src/dirstate/dirstate_map.rs	Sun Jul 04 01:58:03 2021 +0200
@@ -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 {
--- a/rust/hg-core/src/dirstate_tree/dirstate_map.rs	Sun Jul 04 01:57:28 2021 +0200
+++ b/rust/hg-core/src/dirstate_tree/dirstate_map.rs	Sun Jul 04 01:58:03 2021 +0200
@@ -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 {