# HG changeset patch # User Pierre-Yves David # Date 1625278734 -7200 # Node ID c94d3ff46fd548e453a0af672d02f492ec608668 # Parent 559aee84b889c5cea0e3012c27b6dac19a667e71 dirstate-entry: add a `removed` property Lets start to define and use more semantic property. Differential Revision: https://phab.mercurial-scm.org/D10957 diff -r 559aee84b889 -r c94d3ff46fd5 mercurial/cext/parsers.c --- a/mercurial/cext/parsers.c Sat Jul 03 04:26:28 2021 +0200 +++ b/mercurial/cext/parsers.c Sat Jul 03 04:18:54 2021 +0200 @@ -175,10 +175,20 @@ } }; +static PyObject *dirstatetuple_get_removed(dirstateTupleObject *self) +{ + if (self->state == 'r') { + Py_RETURN_TRUE; + } else { + Py_RETURN_FALSE; + } +}; + static PyGetSetDef dirstatetuple_getset[] = { {"state", (getter)dirstatetuple_get_state, NULL, "state", NULL}, {"merged", (getter)dirstatetuple_get_merged, NULL, "merged", NULL}, {"from_p2", (getter)dirstatetuple_get_from_p2, NULL, "from_p2", NULL}, + {"removed", (getter)dirstatetuple_get_removed, NULL, "removed", NULL}, {NULL} /* Sentinel */ }; diff -r 559aee84b889 -r c94d3ff46fd5 mercurial/dirstate.py --- a/mercurial/dirstate.py Sat Jul 03 04:26:28 2021 +0200 +++ b/mercurial/dirstate.py Sat Jul 03 04:18:54 2021 +0200 @@ -472,7 +472,7 @@ if self._map.hastrackeddir(d): break entry = self._map.get(d) - if entry is not None and entry.state != b'r': + if entry is not None and not entry.removed: msg = _(b'file %r in dirstate clashes with %r') msg %= (pycompat.bytestr(d), pycompat.bytestr(f)) raise error.Abort(msg) @@ -531,9 +531,7 @@ # being removed, restore that state. entry = self._map.get(f) if entry is not None: - if entry.state == b'r' and ( - entry[2] == NONNORMAL or entry.from_p2 - ): + if entry.removed and (entry[2] == NONNORMAL or entry.from_p2): source = self._map.copymap.get(f) if entry[2] == NONNORMAL: self.merge(f) @@ -1364,7 +1362,7 @@ madd(fn) elif state == b'a': aadd(fn) - elif state == b'r': + elif t.removed: radd(fn) status = scmutil.status( modified, added, removed, deleted, unknown, ignored, clean diff -r 559aee84b889 -r c94d3ff46fd5 mercurial/pure/parsers.py --- a/mercurial/pure/parsers.py Sat Jul 03 04:26:28 2021 +0200 +++ b/mercurial/pure/parsers.py Sat Jul 03 04:18:54 2021 +0200 @@ -99,6 +99,11 @@ """ return self._size == FROM_P2 + @property + def removed(self): + """True if the file has been removed""" + return self._state == b'r' + def v1_state(self): """return a "state" suitable for v1 serialization""" return self._state