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