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

[PATCH 0/6] blame: enable funcname blaming with userdiff driver

From
Philippe Blain via GitGitGadget <gitgitgadget@gmail.com>
Date
Oct 28, 2020, 12:47 UTC
Message-ID
<pull.774.git.1603889270.gitgitgadget@gmail.com>

This series fixes a bug in git blame where any userdiff driver configured via the attributes mechanism is ignored, which more often than not means thatgit blame -L :<funcname> dies for paths that have a configured userdiff driver. That's patch 6/6.

Patches 1-5 are documentation improvements around the line-log functionality.

Notes (I can't add in-patch commentaries using GitGitGadget (yet, I hope 1 [https://github.com/gitgitgadget/gitgitgadget/issues/173]), so I'm providing what would have been an in-patch commentary on patch 6 below):

 * In patch 6, I considered fixing that bug in a different way by
   initializing sb.path inside blame.c::setup_scoreboard. This function
   already receives path as its second argument, so changing that would not
   impact the API. Probably Thomas thought that sb.path was already
   initialized in sb when he modified builtin/blame.c::prepare_blame_range 
   to also send sb.path to line-range.c::parse_range_arg in 13b8f68c1f (log
   -L: :pattern:file syntax to find by funcname, 2013-03-28). 
   
   Initializing the path in setup_scoreboard would mean we could also
   simplify the API of blame.c::setup_blame_bloom_data since it would not
   need to receive path separately and so its second argument could be
   removed. I went for the simpler alternative of just sending path to 
   parse_range_arg instead of sb.path since it felt simpler, but if we feel
   it would be better to actually initialize sb.path in setup_scoreboard,
   I'll gladly tweak that for v2.
   
   
 * The fact that this bug has been present ever since git blame learned -L
   :<funcname> makes me a little sad. I think that the fact that the diff 
   attribute (either with a builtin userdiff pattern or with 
   diff.*.xfuncname ) influences way more than just the hunk header, but
   also features like git log -L, git blame -L, and the different options
   that I mention in patch 4/6, is not well-known enough. I'm not saying the
   code or the doc is wrong, but I think it's a visibility issue. Maybe more
   blog posts about that would help.... I noticed that the "Git Attributes"
   chapter in the ProGit book 2
   [https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes] does not
   even mention the builtin userdiff patterns, so I'll probably do a PR
   there to mention it. Any other ideas for improving discoverability of
   this very cool feature ?
Philippe Blain (6):
  doc: log, gitk: move '-L' description to 'line-range-options.txt'
  doc: line-range: improve formatting
  blame-options.txt: also mention 'funcname' in '-L' description
  doc: add more pointers to gitattributes(5) for userdiff
  line-log: mention both modes in 'blame' and 'log' short help
  blame: enable funcname blaming with userdiff driver
 Documentation/blame-options.txt      |  9 +++++----
 Documentation/diff-options.txt       |  5 ++++-
 Documentation/git-grep.txt           |  6 ++++--
 Documentation/git-log.txt            | 16 ++--------------
 Documentation/gitk.txt               | 21 ++-------------------
 Documentation/line-range-format.txt  | 28 +++++++++++++++-------------
 Documentation/line-range-options.txt | 27 +++++++++++++++++++++++++++
 builtin/blame.c                      |  5 +++--
 builtin/log.c                        |  4 ++--
 t/annotate-tests.sh                  | 18 ++++++++++++++++++
 10 files changed, 82 insertions(+), 57 deletions(-)
 create mode 100644 Documentation/line-range-options.txt
base-commit: 1d1c4a875900d69c7f0a31e44c3e370dc80ab1ce
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-774%2Fphil-blain%2Fblame-funcname-userdiff-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-774/phil-blain/blame-funcname-userdiff-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/774
-- 
gitgitgadget
Next: Philippe Blain via GitGitGadget
Message 1 of 30 in “blame: enable funcname blaming with userdiff driver”
  1. 0/6 blame: enable funcname blaming with userdiff driverPhilippe Blain via GitGitGadget, Oct 28, 2020
  2. 3/6 blame-options.txt: also mention 'funcname' in '-L' descriptionPhilippe Blain via GitGitGadget, Oct 28, 2020
  3. Junio C HamanoOct 29, 2020
  4. Philippe BlainOct 31, 2020
  5. 6/6 blame: enable funcname blaming with userdiff driverPhilippe Blain via GitGitGadget, Oct 28, 2020
  6. Junio C HamanoOct 29, 2020
  7. Philippe BlainOct 31, 2020
  8. Junio C HamanoOct 31, 2020
  9. 4/6 doc: add more pointers to gitattributes(5) for userdiffPhilippe Blain via GitGitGadget, Oct 28, 2020
  10. Eric SunshineOct 28, 2020
  11. 5/6 line-log: mention both modes in 'blame' and 'log' short helpPhilippe Blain via GitGitGadget, Oct 28, 2020
  12. Eric SunshineOct 28, 2020
  13. Philippe BlainOct 29, 2020
  14. 2/6 doc: line-range: improve formattingPhilippe Blain via GitGitGadget, Oct 28, 2020
  15. Eric SunshineOct 28, 2020
  16. Junio C HamanoOct 29, 2020
  17. Philippe BlainOct 31, 2020
  18. 1/6 doc: log, gitk: move '-L' description to 'line-range-options.txt'Philippe Blain via GitGitGadget, Oct 28, 2020
  19. Junio C HamanoOct 29, 2020
  20. Philippe BlainOct 31, 2020
  21. Junio C HamanoOct 31, 2020
  22. 0/8 blame: enable funcname blaming with userdiff driverPhilippe Blain via GitGitGadget, Nov 1, 2020
  23. 1/8 doc: log, gitk: move '-L' description to 'line-range-options.txt'Philippe Blain via GitGitGadget, Nov 1, 2020
  24. 3/8 blame-options.txt: also mention 'funcname' in '-L' descriptionPhilippe Blain via GitGitGadget, Nov 1, 2020
  25. 4/8 doc: add more pointers to gitattributes(5) for userdiffPhilippe Blain via GitGitGadget, Nov 1, 2020
  26. 5/8 line-log: mention both modes in 'blame' and 'log' short helpPhilippe Blain via GitGitGadget, Nov 1, 2020
  27. 2/8 doc: line-range: improve formattingPhilippe Blain via GitGitGadget, Nov 1, 2020
  28. 6/8 blame: enable funcname blaming with userdiff driverPhilippe Blain via GitGitGadget, Nov 1, 2020
  29. 8/8 blame: simplify 'setup_blame_bloom_data' interfacePhilippe Blain via GitGitGadget, Nov 1, 2020
  30. 7/8 blame: simplify 'setup_scoreboard' interfacePhilippe Blain via GitGitGadget, Nov 1, 2020

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.