This is a re-roll of [1] which teaches git-blame to accept multiple -L ranges. It is built atop [6] (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 [2], [3], [4], [5], [6]; and because it implements relative /RE/ searches requested by Junio [7], 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 simple. Changes since v1: * Make /RE/ searches relative to end of previous -L, if any [7]. 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 [2], [3], [4], [5], [6]. 3-7: Implement git-blame multiple -L support; add tests; update documentation. 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. [1]: http://thread.gmane.org/gmane.comp.version-control.git/229755 [2]: http://thread.gmane.org/gmane.comp.version-control.git/229917 [3]: http://thread.gmane.org/gmane.comp.version-control.git/230532 [4]: http://git.661346.n2.nabble.com/PATCH-0-6-fix-blame-L-regression-add-tests-tp7592174.html [5]: http://thread.gmane.org/gmane.comp.version-control.git/231035 [6]: http://thread.gmane.org/gmane.comp.version-control.git/231412 [7]: http://article.gmane.org/gmane.comp.version-control.git/229966 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(-) -- 1.8.4.rc1.409.gbd48715 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html