Subject: [RFC PATCH 0/5] line-log: towards a more responsive, incremental 'git log -L'

From: SZEDER Gábor <[email-masked]>
Date: Sun, 18 Aug 2019 20:27:56 +0200

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.

SZEDER Gábor (5):
  completion: offer '--(no-)patch' among 'git log' options
  line-log: remove unused fields from 'struct line_log_data'
  t4211-line-log: add tests for parent oids
  line-log: more responsive, incremental 'git log -L'
  line-log: try to use generation number-based topo-ordering

 contrib/completion/git-completion.bash |  1 +
 line-log.c                             |  4 +-
 line-log.h                             |  5 +-
 revision.c                             | 38 +++++++++++---
 t/t4211-line-log.sh                    | 68 ++++++++++++++++++++++++++
 5 files changed, 105 insertions(+), 11 deletions(-)

-- 
2.23.0.349.g73f10e387d