Mercurial > hg
changeset 47532:ccbabaee5c36
dirstate-entry: add a `need_delay` method
This abstract the internal processing need for entry that would have an
ambiguous mtime (If I understand things correctly).
Differential Revision: https://phab.mercurial-scm.org/D10974
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sun, 04 Jul 2021 02:13:53 +0200 |
parents | f5b8f0b9c129 |
children | 174d0bcce2eb |
files | mercurial/cext/parsers.c mercurial/dirstate.py mercurial/pure/parsers.py |
diffstat | 3 files changed, 21 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cext/parsers.c Sun Jul 04 02:12:54 2021 +0200 +++ b/mercurial/cext/parsers.c Sun Jul 04 02:13:53 2021 +0200 @@ -141,6 +141,20 @@ return PyInt_FromLong(self->mtime); }; +static PyObject *dirstatetuple_need_delay(dirstateTupleObject *self, + PyObject *value) +{ + long now; + if (!pylong_to_long(value, &now)) { + return NULL; + } + if (self->state == 'n' && self->mtime == now) { + Py_RETURN_TRUE; + } else { + Py_RETURN_FALSE; + } +}; + static PyMethodDef dirstatetuple_methods[] = { {"v1_state", (PyCFunction)dirstatetuple_v1_state, METH_NOARGS, "return a \"state\" suitable for v1 serialization"}, @@ -150,6 +164,8 @@ "return a \"size\" suitable for v1 serialization"}, {"v1_mtime", (PyCFunction)dirstatetuple_v1_mtime, METH_NOARGS, "return a \"mtime\" suitable for v1 serialization"}, + {"need_delay", (PyCFunction)dirstatetuple_need_delay, METH_O, + "True if the stored mtime would be ambiguous with the current time"}, {NULL} /* Sentinel */ };
--- a/mercurial/dirstate.py Sun Jul 04 02:12:54 2021 +0200 +++ b/mercurial/dirstate.py Sun Jul 04 02:13:53 2021 +0200 @@ -754,7 +754,7 @@ if delaywrite > 0: # do we have any files to delay for? for f, e in pycompat.iteritems(self._map): - if e.state == b'n' and e[3] == now: + if e.need_delay(now): import time # to avoid useless import # rather than sleep n seconds, sleep until the next
--- a/mercurial/pure/parsers.py Sun Jul 04 02:12:54 2021 +0200 +++ b/mercurial/pure/parsers.py Sun Jul 04 02:13:53 2021 +0200 @@ -153,6 +153,10 @@ """return a "mtime" suitable for v1 serialization""" return self._mtime + def need_delay(self, now): + """True if the stored mtime would be ambiguous with the current time""" + return self._state == b'n' and self._mtime == now + def gettype(q): return int(q & 0xFFFF)