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.
( )
Alphare | |
pulkit |
hg-reviewers |
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.
No Linters Available |
No Unit Test Coverage |
Path | Packages | |||
---|---|---|---|---|
M | mercurial/cext/parsers.c (11 lines) | |||
M | mercurial/pure/parsers.py (8 lines) |
Commit | Parents | Author | Summary | Date |
---|---|---|---|---|
083eb20dc0be | 4cd008d98433 | Pierre-Yves David | Jul 19 2021, 12:29 AM |
#define PyInt_FromSsize_t PyLong_FromSsize_t | #define PyInt_FromSsize_t PyLong_FromSsize_t | ||||
#define PyInt_AsLong PyLong_AsLong | #define PyInt_AsLong PyLong_AsLong | ||||
#endif | #endif | ||||
static const char *const versionerrortext = "Python minor version mismatch"; | static const char *const versionerrortext = "Python minor version mismatch"; | ||||
static const int dirstate_v1_from_p2 = -2; | static const int dirstate_v1_from_p2 = -2; | ||||
static const int dirstate_v1_nonnormal = -1; | static const int dirstate_v1_nonnormal = -1; | ||||
static const int ambiguous_time = -1; | |||||
static PyObject *dict_new_presized(PyObject *self, PyObject *args) | static PyObject *dict_new_presized(PyObject *self, PyObject *args) | ||||
{ | { | ||||
Py_ssize_t expected_size; | Py_ssize_t expected_size; | ||||
if (!PyArg_ParseTuple(args, "n:make_presized_dict", &expected_size)) { | if (!PyArg_ParseTuple(args, "n:make_presized_dict", &expected_size)) { | ||||
return NULL; | return NULL; | ||||
} | } | ||||
t->state = state; | t->state = state; | ||||
t->mode = mode; | t->mode = mode; | ||||
t->size = size; | t->size = size; | ||||
t->mtime = mtime; | t->mtime = mtime; | ||||
return (PyObject *)t; | 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[] = { | static PyMethodDef dirstate_item_methods[] = { | ||||
{"v1_state", (PyCFunction)dirstate_item_v1_state, METH_NOARGS, | {"v1_state", (PyCFunction)dirstate_item_v1_state, METH_NOARGS, | ||||
"return a \"state\" suitable for v1 serialization"}, | "return a \"state\" suitable for v1 serialization"}, | ||||
{"v1_mode", (PyCFunction)dirstate_item_v1_mode, METH_NOARGS, | {"v1_mode", (PyCFunction)dirstate_item_v1_mode, METH_NOARGS, | ||||
"return a \"mode\" suitable for v1 serialization"}, | "return a \"mode\" suitable for v1 serialization"}, | ||||
{"v1_size", (PyCFunction)dirstate_item_v1_size, METH_NOARGS, | {"v1_size", (PyCFunction)dirstate_item_v1_size, METH_NOARGS, | ||||
"return a \"size\" suitable for v1 serialization"}, | "return a \"size\" suitable for v1 serialization"}, | ||||
{"v1_mtime", (PyCFunction)dirstate_item_v1_mtime, METH_NOARGS, | {"v1_mtime", (PyCFunction)dirstate_item_v1_mtime, METH_NOARGS, | ||||
"return a \"mtime\" suitable for v1 serialization"}, | "return a \"mtime\" suitable for v1 serialization"}, | ||||
{"need_delay", (PyCFunction)dirstate_item_need_delay, METH_O, | {"need_delay", (PyCFunction)dirstate_item_need_delay, METH_O, | ||||
"True if the stored mtime would be ambiguous with the current time"}, | "True if the stored mtime would be ambiguous with the current time"}, | ||||
{"from_v1_data", (PyCFunction)dirstate_item_from_v1_meth, METH_O, | {"from_v1_data", (PyCFunction)dirstate_item_from_v1_meth, METH_O, | ||||
"build a new DirstateItem object from V1 data"}, | "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 */ | {NULL} /* Sentinel */ | ||||
}; | }; | ||||
static PyObject *dirstate_item_get_mode(dirstateItemObject *self) | static PyObject *dirstate_item_get_mode(dirstateItemObject *self) | ||||
{ | { | ||||
return PyInt_FromLong(self->mode); | return PyInt_FromLong(self->mode); | ||||
}; | }; | ||||
""" | """ | ||||
return cls( | return cls( | ||||
state=state, | state=state, | ||||
mode=mode, | mode=mode, | ||||
size=size, | size=size, | ||||
mtime=mtime, | 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): | def __getitem__(self, idx): | ||||
if idx == 0 or idx == -4: | if idx == 0 or idx == -4: | ||||
msg = b"do not use item[x], use item.state" | msg = b"do not use item[x], use item.state" | ||||
util.nouideprecwarn(msg, b'6.0', stacklevel=2) | util.nouideprecwarn(msg, b'6.0', stacklevel=2) | ||||
return self._state | return self._state | ||||
elif idx == 1 or idx == -3: | elif idx == 1 or idx == -3: | ||||
msg = b"do not use item[x], use item.mode" | msg = b"do not use item[x], use item.mode" | ||||
util.nouideprecwarn(msg, b'6.0', stacklevel=2) | util.nouideprecwarn(msg, b'6.0', stacklevel=2) |