D11119: dirstate-item: add a `set_possibly_dirty` method
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Mon Jul 19 10:39:19 UTC 2021
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
See inline documentation for details.
The pushes the AMBIGUOUS_TIME implementation further down the line within the
DirstateItem only. When this cleanup is done we will be able to stop using this
representation internally.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D11119
AFFECTED FILES
mercurial/cext/parsers.c
mercurial/pure/parsers.py
CHANGE DETAILS
diff --git a/mercurial/pure/parsers.py b/mercurial/pure/parsers.py
--- a/mercurial/pure/parsers.py
+++ b/mercurial/pure/parsers.py
@@ -81,6 +81,14 @@
mtime=mtime,
)
+ def set_possibly_dirty(self):
+ """Mark a file as "possibly dirty"
+
+ This means the next status call will have to actually check its content
+ to make sure it is correct.
+ """
+ self._mtime = AMBIGUOUS_TIME
+
def __getitem__(self, idx):
if idx == 0 or idx == -4:
msg = b"do not use item[x], use item.state"
diff --git a/mercurial/cext/parsers.c b/mercurial/cext/parsers.c
--- a/mercurial/cext/parsers.c
+++ b/mercurial/cext/parsers.c
@@ -31,6 +31,7 @@
static const int dirstate_v1_from_p2 = -2;
static const int dirstate_v1_nonnormal = -1;
+static const int ambiguous_time = -1;
static PyObject *dict_new_presized(PyObject *self, PyObject *args)
{
@@ -197,6 +198,14 @@
return (PyObject *)t;
};
+/* This means the next status call will have to actually check its content
+ to make sure it is correct. */
+static PyObject *dirstate_item_set_possibly_dirty(dirstateItemObject *self)
+{
+ self->mtime = ambiguous_time;
+ Py_RETURN_NONE;
+}
+
static PyMethodDef dirstate_item_methods[] = {
{"v1_state", (PyCFunction)dirstate_item_v1_state, METH_NOARGS,
"return a \"state\" suitable for v1 serialization"},
@@ -210,6 +219,8 @@
"True if the stored mtime would be ambiguous with the current time"},
{"from_v1_data", (PyCFunction)dirstate_item_from_v1_meth, METH_O,
"build a new DirstateItem object from V1 data"},
+ {"set_possibly_dirty", (PyCFunction)dirstate_item_set_possibly_dirty,
+ METH_NOARGS, "mark a file as \"possibly dirty\""},
{NULL} /* Sentinel */
};
To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list