# HG changeset patch # User Pierre-Yves David # Date 2021-07-04 00:12:54 # Node ID f5b8f0b9c1291a11003ba9a19bab44233d6299b2 # Parent a1745a29288502a35d8600c86cf13415bf3209cc dirstate-entry: add a `tracked` property This abstract the individual `state` value and has a clear semantic. Differential Revision: https://phab.mercurial-scm.org/D10973 diff --git a/mercurial/cext/parsers.c b/mercurial/cext/parsers.c --- a/mercurial/cext/parsers.c +++ b/mercurial/cext/parsers.c @@ -158,6 +158,15 @@ static PyObject *dirstatetuple_get_state return PyBytes_FromStringAndSize(&self->state, 1); }; +static PyObject *dirstatetuple_get_tracked(dirstateTupleObject *self) +{ + if (self->state == 'a' || self->state == 'm' || self->state == 'n') { + Py_RETURN_TRUE; + } else { + Py_RETURN_FALSE; + } +}; + static PyObject *dirstatetuple_get_added(dirstateTupleObject *self) { if (self->state == 'a') { @@ -214,6 +223,7 @@ static PyObject *dirstatetuple_get_remov static PyGetSetDef dirstatetuple_getset[] = { {"state", (getter)dirstatetuple_get_state, NULL, "state", NULL}, + {"tracked", (getter)dirstatetuple_get_tracked, NULL, "tracked", NULL}, {"added", (getter)dirstatetuple_get_added, NULL, "added", NULL}, {"merged_removed", (getter)dirstatetuple_get_merged_removed, NULL, "merged_removed", NULL}, diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py --- a/mercurial/dirstate.py +++ b/mercurial/dirstate.py @@ -1313,7 +1313,7 @@ class dirstate(object): size = t[2] time = t[3] - if not st and state in b"nma": + if not st and t.tracked: dadd(fn) elif state == b'n': if ( diff --git a/mercurial/pure/parsers.py b/mercurial/pure/parsers.py --- a/mercurial/pure/parsers.py +++ b/mercurial/pure/parsers.py @@ -87,6 +87,11 @@ class dirstatetuple(object): return self._state @property + def tracked(self): + """True is the file is tracked in the working copy""" + return self._state in b"nma" + + @property def added(self): """True if the file has been added""" return self._state == b'a'