git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 00/16] blame: accept multiple -L ranges

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Aug 6, 2013, 13:59 UTC
Message-ID
<1375797589-65308-1-git-send-email-sunshine@sunshineco.com>

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
Next: Eric Sunshine
Message 1 of 22 in “blame: accept multiple -L ranges”
  1. 00/16 blame: accept multiple -L rangesEric Sunshine, Aug 6, 2013
  2. 01/16 git-log.txt: place each -L option variation on its own lineEric Sunshine, Aug 6, 2013
  3. 02/16 line-range-format.txt: clarify -L:regex usage formEric Sunshine, Aug 6, 2013
  4. 03/16 range-set: publish API for re-use by git-blame -LEric Sunshine, Aug 6, 2013
  5. 04/16 blame: inline one-line function into its lone callerEric Sunshine, Aug 6, 2013
  6. 05/16 blame: accept multiple -L rangesEric Sunshine, Aug 6, 2013
  7. Junio C HamanoAug 6, 2013
  8. Eric SunshineAug 6, 2013
  9. Junio C HamanoAug 6, 2013
  10. 06/16 t8001/t8002: blame: add tests of multiple -L optionsEric Sunshine, Aug 6, 2013
  11. 07/16 blame: document multiple -L supportEric Sunshine, Aug 6, 2013
  12. 08/16 line-range: teach -L/RE/ to search relative to anchor pointEric Sunshine, Aug 6, 2013
  13. Junio C HamanoAug 6, 2013
  14. 09/16 blame: teach -L/RE/ to search from end of previous -L rangeEric Sunshine, Aug 6, 2013
  15. Junio C HamanoAug 6, 2013
  16. 10/16 log: teach -L/RE/ to search from end of previous -L rangeEric Sunshine, Aug 6, 2013
  17. 11/16 line-range-format.txt: document -L/RE/ relative searchEric Sunshine, Aug 6, 2013
  18. 12/16 line-range: teach -L^/RE/ to search from start of fileEric Sunshine, Aug 6, 2013
  19. 13/16 line-range: teach -L:RE to search from end of previous -L rangeEric Sunshine, Aug 6, 2013
  20. 14/16 line-range: teach -L^:RE to search from start of fileEric Sunshine, Aug 6, 2013
  21. 15/16 t8001/t8002: blame: add tests of -L line numbers less than 1Eric Sunshine, Aug 6, 2013
  22. 16/16 line-range: reject -L line numbers less than 1Eric Sunshine, Aug 6, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.