Re: [PATCH 2/2] fsmonitor: Store fsmonitor bitmap before splitting index
- Date: Fri, 10 Nov 2017 14:11:41 +0900
- From: Junio C Hamano <gitster@xxxxxxxxx>
- Subject: Re: [PATCH 2/2] fsmonitor: Store fsmonitor bitmap before splitting index
Alex Vandiver <alexmv@xxxxxxxxxxx> writes:
> ba1b9caca6 resolved the problem of the fsmonitor data being applied to
If you want to reference a previous commit in the history of a stable
branch, use the format "abbreviated sha1 (subject, date)",
with the subject enclosed in a pair of double-quotes, like this:
Commit f86a374 ("pack-bitmap.c: fix a memleak", 2015-03-30)
noticed that ...
The "Copy commit summary" command of gitk can be used to obtain this
format, or this invocation of "git show":
git show -s --date=short --pretty='format:%h ("%s", %ad)' <commit>
> the non-base index when reading; however, a similar problem exists
> when writing the index. Specifically, writing of the fsmonitor
> extension happens only after the work to split the index has been
> applied -- as such, the information in the index is only for the
> non-"base" index, and thus the extension information contains only
> partial data.
So... what's the effect of not applying this change? Do we miss
paths that are known to the watchman to have been modified and end
up not adding them if we do "git add -u"? Or do we miss paths that
are known to the watchman to be clean but mistakenly think are dirty,
and spend unnecessary cycles? IOW, is this fixing a correctness
issue, or a performance one?
> When saving, compute the ewah bitmap before the index is split, and
> store it in the fsmonitor_dirty field, mirroring the behavior that
> occurred during reading. fsmonitor_dirty is kept from being leaked by
> being freed when the extension data is written -- which always happens
> precisely once, no matter the split index configuration.
The observation and the approach stated to fix both sounds
sensible. I'll queue this too, awaiting for Ben's review.