Thread (1 message) 1 message, 1 author, 2018-10-19

Re: [PATCH v1 1/2] reset: don't compute unstaged changes after reset when --quiet

From: Junio C Hamano <hidden>
Date: 2018-10-19 00:34:58

Ben Peart [off-list ref] writes:
Note the status command after the reset doesn't really change as it
still must lstat() every file (the 0.02 difference is well within the
variability of run to run differences).
Of course, it would not make an iota of difference, whether reset
refreshes the cached stat index fully, to the cost of later lstat().
What the refreshing saves is having to scan the contents to find that
the file is unchanged at runtime.

If your lstat() is not significantly faster than opening and
scanning the file, the optimization based on the cached-stat
information becomes moot.  In a working tree full of unmodified
files, stale cached-stat info in the index will cause us to compare
the contents and waste a lot of time, and that is what refreshing
avoids.  If the "status" in your test sequence do not have to do
that (e.g. the cached-stat information is already up-to-date and
there is no point running refresh in reset), then I'd expect no
difference between these two tests.
To move this forward, here is what I propose:

1) If the '--quiet' flag is passed, we silently take advantage of the
fact we can avoid having to do an "extra" lstat() of every file and
scope the refresh_index() call to those paths that we know have
changed.
That's pretty much what the patch under discussion does.
2) I can remove the note in the documentation of --quiet which I only
added to facilitate discoverability.
Quite honestly, I am not sure if this (meaning #1 above) alone need
to be even discoverable.  Those who want --quiet output would use
it, those who want to be told which paths are modified would not,
and those who want to quickly be told which paths are modified would
not be helped by the limited refresh anyway, so "with --quiet you
can make it go faster" would not help anybody.
3) I can also edit the documentation for reset.quietDefault (maybe I
should rename that to "reset.quiet"?) so that it does not discuss the
potential performance impact.
I think reset.quiet (or reset.verbosity) is a good thing to have
regardless.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help