This is a re-roll of  which teaches git-blame to accept multiple -L
ranges. It is built atop  (es/blame-L-more in 'pu').
The series is longer than expected since it includes a few more cleanup
patches beyond those already posted separately , , , , ;
and because it implements relative /RE/ searches requested by Junio ,
and brings git-log's multiple -L behavior in line with git-blame's.
Despite the length of the series, the patches are mostly small and
Changes since v1:
* Make /RE/ searches relative to end of previous -L, if any . Ditto
for :RE searches.
* Introduce ^/RE/ and ^:RE to search from start of file.
* Add (lots of) tests.
* Update documentation.
* Collect ranges via 'struct range_set' rather than (ab)using
blame.c:coalesce() and add_blame_range().
Quick overview of patches:
1-2: More cleanups akin to , , , , .
3-7: Implement git-blame multiple -L support; add tests; update
8-14: Make /RE/ and :RE searches relative; introduce ^/RE/ and ^:RE to
search from start of file; add tests; update documentation.
15-16: Reject bogus -L inputs for line numbers less than 1. This comes
late in the series because this case becomes much easier to detect
following patch 8.
Eric Sunshine (16):
git-log.txt: place each -L option variation on its own line
line-range-format.txt: clarify -L:regex usage form
range-set: publish API for re-use by git-blame -L
blame: inline one-line function into its lone caller
blame: accept multiple -L ranges
t8001/t8002: blame: add tests of multiple -L options
blame: document multiple -L support
line-range: teach -L/RE/ to search relative to anchor point
blame: teach -L/RE/ to search from end of previous -L range
log: teach -L/RE/ to search from end of previous -L range
line-range-format.txt: document -L/RE/ relative search
line-range: teach -L^/RE/ to search from start of file
line-range: teach -L:RE to search from end of previous -L range
line-range: teach -L^:RE to search from start of file
t8001/t8002: blame: add tests of -L line numbers less than 1
line-range: reject -L line numbers less than 1
Documentation/blame-options.txt | 10 +--
Documentation/git-blame.txt | 10 ++-
Documentation/git-log.txt | 5 +-
Documentation/line-range-format.txt | 16 +++--
builtin/blame.c | 93 ++++++++++++++------------
line-log.c | 25 ++++---
line-log.h | 12 ++++
line-range.c | 62 +++++++++++++----
line-range.h | 5 +-
t/annotate-tests.sh | 130 ++++++++++++++++++++++++++++++++++--
t/t4211-line-log.sh | 2 +-
11 files changed, 282 insertions(+), 88 deletions(-)
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html