On 8/18/2019 2:27 PM, SZEDER Gábor wrote:
> Line-level log performs a preprocessing step in
> prepare_revision_walk(), during which it filters and rewrites history
> to keep only commits modifying the given line range.  This
> preprocessing causes significant delay before the first commit is
> shown, wastes CPU time when the user asks only for a few commits, and
> does parent rewriting with no way to turn it off.
> 
> This patch series addresses these issues by integrating line-level log
> filtering into the revision walking machinery and making it work
> together with generation number-based topo-ordering (though for now
> only in the case when the user doesn't explicitly asks for parent
> rewriting, which is probably the common case).
> 
> The first two patches are quite straightforward (and arguably somewhat
> unrelated), but the rest deals with history traversal and parent
> rewriting, which I don't usually do, hence the RFC.

Hi Szeder,

Thanks for sending this series! I'm particularly excited about it
because we recently got a bug report from a user in the Windows OS
repo about "git log -L" being very slow. I put it on the backlog [1]
but haven't had time to investigate it myself. After we are done
updating to v2.23.0 [2], I'll have time to test your changes on
the Windows repo. I anticipate your change to provide a massive
boost.

In the meantime, your first three patches look good to me. I'll
dig more into the last two at the same time as I run performance
tests.

Thanks,
-Stolee

[1] https://github.com/microsoft/git/issues/166
[2] https://github.com/microsoft/git/pull/165

Reply via email to