Mercurial > public > mercurial-scm > hg-stable
diff mercurial/cext/parsers.c @ 48244:f7fd629ffb98
dirstate-v2: Separate HAS_FILE_MTIME and HAS_DIRECTORY_MTIME flags
Previously the same flag was used, with its meaning based on whether the node
otherwise identifies a file tracked anywhere.
In addition to being more explicit, this enables storing a directory mtime
if a given path used to be tracked in a parent commit (so the dirstate still
has data about it) but became a directory in the working copy.
(However this is not done yet as it would require a larger change,
replacing the `dirstate_map::NodeData` enum with struct fields.)
Differential Revision: https://phab.mercurial-scm.org/D11662
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Thu, 14 Oct 2021 16:39:16 +0200 |
parents | 7e78c72ee3ea |
children | 1730b2fceaa1 |
line wrap: on
line diff
--- a/mercurial/cext/parsers.c Thu Oct 14 16:06:31 2021 +0200 +++ b/mercurial/cext/parsers.c Thu Oct 14 16:39:16 2021 +0200 @@ -119,7 +119,7 @@ t->size = 0; } if (has_meaningful_mtime) { - t->flags |= dirstate_flag_has_meaningful_mtime; + t->flags |= dirstate_flag_has_file_mtime; t->mtime = mtime; } else { t->mtime = 0; @@ -225,7 +225,7 @@ { if (dirstate_item_c_removed(self)) { return 0; - } else if (!(self->flags & dirstate_flag_has_meaningful_mtime) || + } else if (!(self->flags & dirstate_flag_has_file_mtime) || !(self->flags & dirstate_flag_p1_tracked) || !(self->flags & dirstate_flag_wc_tracked) || (self->flags & dirstate_flag_p2_info)) { @@ -334,7 +334,7 @@ t->flags = (dirstate_flag_wc_tracked | dirstate_flag_p1_tracked | dirstate_flag_has_meaningful_data | - dirstate_flag_has_meaningful_mtime); + dirstate_flag_has_file_mtime); t->mode = mode; t->size = size; t->mtime = mtime; @@ -395,7 +395,7 @@ to make sure it is correct. */ static PyObject *dirstate_item_set_possibly_dirty(dirstateItemObject *self) { - self->flags &= ~dirstate_flag_has_meaningful_mtime; + self->flags &= ~dirstate_flag_has_file_mtime; Py_RETURN_NONE; } @@ -409,7 +409,7 @@ } self->flags = dirstate_flag_wc_tracked | dirstate_flag_p1_tracked | dirstate_flag_has_meaningful_data | - dirstate_flag_has_meaningful_mtime; + dirstate_flag_has_file_mtime; self->mode = mode; self->size = size; self->mtime = mtime; @@ -419,7 +419,7 @@ static PyObject *dirstate_item_set_tracked(dirstateItemObject *self) { self->flags |= dirstate_flag_wc_tracked; - self->flags &= ~dirstate_flag_has_meaningful_mtime; + self->flags &= ~dirstate_flag_has_file_mtime; Py_RETURN_NONE; } @@ -437,7 +437,7 @@ if (self->flags & dirstate_flag_p2_info) { self->flags &= ~(dirstate_flag_p2_info | dirstate_flag_has_meaningful_data | - dirstate_flag_has_meaningful_mtime); + dirstate_flag_has_file_mtime); self->mode = 0; self->mtime = 0; self->size = 0;