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

Re: [PATCH v2 7/7] blame: actually use the diff opts parsed from the command line

From
Michael Haggerty <mhagger@alum.mit.edu>
Date
Sep 5, 2016, 04:12 UTC
Message-ID
<a6d9e9a7-76c4-5b26-0b49-55698369180d@alum.mit.edu>
In-Reply-To
<fe96d9e6-b306-0b57-8f24-6106b7e285cb@web.de>
On 08/23/2016 11:56 AM, René Scharfe wrote:
Show 32 quoted lines
> Am 22.08.2016 um 13:22 schrieb Michael Haggerty:
>> "git blame" already parsed generic diff options from the command line
>> via diff_opt_parse(), but instead of passing the resulting xdl_opts to
>> xdi_diff(), it sent its own xdl_opts, which only reflected the values of
>> the self-parsed options "-w" and "--minimal". Instead, rely on
>> diff_opt_parse() to parse all of the diff options, including "-w" and
>> "--minimal", and pass the resulting xdl_opts to xdi_diff().
> 
> Sounds useful: It allows more fine-grained control over which whitespace
> changes to ignore and which diff algorithm to use.  There is a bit of
> overlap (e.g. with -b meaning show blank boundaries vs. ignore
> whitespace changes), but with your patch blame's own options still take
> precedence, so there should be no unpleasant surprises.
> 
>> Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
>> ---
>> Somebody who knows more about how diff operations are configured
>> should please review this. I'm not certain that the change as
>> implemented won't have other unwanted side-effects, though of course
>> I checked that the test suite runs correctly.
> 
> I don't qualify, but I'll comment anyway..
> 
>>  builtin/blame.c        |  11 ++--
>>  t/t4059-diff-indent.sh | 160
>> +++++++++++++++++++++++++++++++++++++++++++++++++
>>  2 files changed, 165 insertions(+), 6 deletions(-)
>>  create mode 100755 t/t4059-diff-indent.sh
> 
> This new test doesn't call git blame.  Does it belong to a different
> commit?  And shouldn't the change to blame.c stand on its own, outside
> of this series?

Thanks for catching this. I squashed the test incorrectly; it was meant to be part of the previous commit. I'll fix it in v3.

The reason that I would prefer to change `blame` as part of this patch series is that I think it would be disconcerting for `git diff` and `git blame` to use different heuristics when computing diffs. It would make their output inconsistent.

But probably that means passing just the new option to `git blame` rather than passing all possible `diff` options through.

> [...]

Your other comments may be moot given that changing `git blame` in this way seems to have been a bad idea in the first place [1]. But I'll keep them in mind if a new version contains similar code.

Thanks, Michael

[1] http://public-inbox.org/git/xmqqtwebwhbg.fsf@gitster.mtv.corp.google.com/

Previous: René ScharfeNext: Junio C Hamano
Message 11 of 13 in “Better heuristics make prettier diffs”
  1. 0/7 Better heuristics make prettier diffsMichael Haggerty, Aug 22, 2016
  2. 2/7 xdl_change_compact(): only use heuristic if group can't be matchedMichael Haggerty, Aug 22, 2016
  3. 1/7 xdl_change_compact(): fix compaction heuristic to adjust ixoMichael Haggerty, Aug 22, 2016
  4. 6/7 diff: improve positioning of add/delete blocks in diffsMichael Haggerty, Aug 22, 2016
  5. 3/7 is_blank_line(): take a single xrecord_t as argumentMichael Haggerty, Aug 22, 2016
  6. 5/7 xdl_change_compact(): introduce the concept of a change groupMichael Haggerty, Aug 22, 2016
  7. Junio C HamanoAug 23, 2016
  8. 4/7 recs_match(): take two xrecord_t pointers as argumentsMichael Haggerty, Aug 22, 2016
  9. 7/7 blame: actually use the diff opts parsed from the command lineMichael Haggerty, Aug 22, 2016
  10. René ScharfeAug 23, 2016
  11. Michael HaggertySep 5, 2016
  12. Junio C HamanoSep 7, 2016
  13. Junio C HamanoAug 23, 2016

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.