Mercurial > hg
comparison mercurial/cext/parsers.c @ 48222:7e78c72ee3ea
dirstate-v2: Initial Python serializer
This adds code seralizing a `map` and `copy_map` dicts into dirstate-v2
file formate. This is not used yet.
Differential Revision: https://phab.mercurial-scm.org/D11519
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Thu, 22 Jul 2021 17:31:37 +0200 |
parents | a32a96079e2d |
children | f7fd629ffb98 |
comparison
equal
deleted
inserted
replaced
48221:a32a96079e2d | 48222:7e78c72ee3ea |
---|---|
233 } else { | 233 } else { |
234 return self->mtime; | 234 return self->mtime; |
235 } | 235 } |
236 } | 236 } |
237 | 237 |
238 static PyObject *dirstate_item_v2_data(dirstateItemObject *self) | |
239 { | |
240 unsigned char flags = self->flags; | |
241 int mode = dirstate_item_c_v1_mode(self); | |
242 if ((mode & S_IXUSR) != 0) { | |
243 flags |= dirstate_flag_mode_exec_perm; | |
244 } else { | |
245 flags &= ~dirstate_flag_mode_exec_perm; | |
246 } | |
247 if (S_ISLNK(mode)) { | |
248 flags |= dirstate_flag_mode_is_symlink; | |
249 } else { | |
250 flags &= ~dirstate_flag_mode_is_symlink; | |
251 } | |
252 return Py_BuildValue("Bii", flags, self->size, self->mtime); | |
253 }; | |
254 | |
238 static PyObject *dirstate_item_v1_state(dirstateItemObject *self) | 255 static PyObject *dirstate_item_v1_state(dirstateItemObject *self) |
239 { | 256 { |
240 char state = dirstate_item_c_v1_state(self); | 257 char state = dirstate_item_c_v1_state(self); |
241 return PyBytes_FromStringAndSize(&state, 1); | 258 return PyBytes_FromStringAndSize(&state, 1); |
242 }; | 259 }; |
426 self->size = 0; | 443 self->size = 0; |
427 } | 444 } |
428 Py_RETURN_NONE; | 445 Py_RETURN_NONE; |
429 } | 446 } |
430 static PyMethodDef dirstate_item_methods[] = { | 447 static PyMethodDef dirstate_item_methods[] = { |
448 {"v2_data", (PyCFunction)dirstate_item_v2_data, METH_NOARGS, | |
449 "return data suitable for v2 serialization"}, | |
431 {"v1_state", (PyCFunction)dirstate_item_v1_state, METH_NOARGS, | 450 {"v1_state", (PyCFunction)dirstate_item_v1_state, METH_NOARGS, |
432 "return a \"state\" suitable for v1 serialization"}, | 451 "return a \"state\" suitable for v1 serialization"}, |
433 {"v1_mode", (PyCFunction)dirstate_item_v1_mode, METH_NOARGS, | 452 {"v1_mode", (PyCFunction)dirstate_item_v1_mode, METH_NOARGS, |
434 "return a \"mode\" suitable for v1 serialization"}, | 453 "return a \"mode\" suitable for v1 serialization"}, |
435 {"v1_size", (PyCFunction)dirstate_item_v1_size, METH_NOARGS, | 454 {"v1_size", (PyCFunction)dirstate_item_v1_size, METH_NOARGS, |