diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2023-03-27 00:45:42 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-03-27 18:40:39 +0200 |
commit | be6b65b91bb48c9399c8a6a358dd29b198f2bd79 (patch) | |
tree | f8233b0f6ff927cfacca346d2bb272f2f2aeb212 /fetch-pack.h | |
parent | split-index; stop abusing the `base_oid` to strip the "link" extension (diff) | |
download | git-be6b65b91bb48c9399c8a6a358dd29b198f2bd79.tar.xz git-be6b65b91bb48c9399c8a6a358dd29b198f2bd79.zip |
fsmonitor: avoid overriding `cache_changed` bits
As of e636a7b4d030 (read-cache: be specific what part of the index has
changed, 2014-06-13), the paradigm `cache_changed = 1` fell out of
fashion and it became a bit field instead.
This is important because some bits have specific meaning and should not
be unset without care, e.g. `SPLIT_INDEX_ORDERED`.
However, b5a816975206 (mark_fsmonitor_valid(): mark the index as changed
if needed, 2019-05-24) did use the `cache_changed` attribute as if it
were a Boolean instead of a bit field.
That not only would override the `SPLIT_INDEX_ORDERED` bit when marking
index entries as valid via the FSMonitor, but worse: it would set the
`SOMETHING_OTHER` bit (whose value is 1). This means that Git would
unnecessarily force a full index to be written out when a split index
was asked for.
Let's instead use the bit that is specifically intended to indicate
FSMonitor-triggered changes, allowing the split-index feature to work as
designed.
Noticed-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'fetch-pack.h')
0 files changed, 0 insertions, 0 deletions