Mercurial > hg
changeset 47517:28632eb3ca3e
dirstate-entry: restrict `from_p2` property to tracked file
The other case is now handled in `from_p2_removed`, and should ideally be moved
to a lower level. So we can drop the `state == 'n'` narrowing and move it in the
property itself.
Differential Revision: https://phab.mercurial-scm.org/D10959
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sun, 04 Jul 2021 01:14:15 +0200 |
parents | b8ffe85e399b |
children | f6f25ab6bfc8 |
files | mercurial/cext/parsers.c mercurial/dirstate.py mercurial/pure/parsers.py |
diffstat | 3 files changed, 6 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cext/parsers.c Sat Jul 03 20:34:09 2021 +0200 +++ b/mercurial/cext/parsers.c Sun Jul 04 01:14:15 2021 +0200 @@ -178,7 +178,7 @@ static PyObject *dirstatetuple_get_from_p2(dirstateTupleObject *self) { - if (self->size == dirstate_v1_from_p2) { + if (self->state == 'n' && self->size == dirstate_v1_from_p2) { Py_RETURN_TRUE; } else { Py_RETURN_FALSE;
--- a/mercurial/dirstate.py Sat Jul 03 20:34:09 2021 +0200 +++ b/mercurial/dirstate.py Sun Jul 04 01:14:15 2021 +0200 @@ -393,7 +393,7 @@ copies[f] = source self.normallookup(f) # Also fix up otherparent markers - elif s.state == b'n' and s.from_p2: + elif s.from_p2: source = self._map.copymap.get(f) if source: copies[f] = source @@ -542,7 +542,7 @@ if source is not None: self.copy(source, f) return - elif entry.merged or entry.state == b'n' and entry.from_p2: + elif entry.merged or entry.from_p2: return self._addpath(f, b'n', 0, possibly_dirty=True) self._map.copymap.pop(f, None)
--- a/mercurial/pure/parsers.py Sat Jul 03 20:34:09 2021 +0200 +++ b/mercurial/pure/parsers.py Sun Jul 04 01:14:15 2021 +0200 @@ -98,9 +98,11 @@ def from_p2(self): """True if the file have been fetched from p2 during the current merge + This is only True is the file is currently tracked. + Should only be set if a merge is in progress in the dirstate """ - return self._size == FROM_P2 + return self._state == b'n' and self._size == FROM_P2 @property def from_p2_removed(self):