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

Re: misleading diff-hunk header

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 21, 2012, 17:52 UTC
Message-ID
<7vfw7gdtfg.fsf@alter.siamese.dyndns.org>
In-Reply-To
<5033AC55.8080405@tim.thechases.com>
Tim Chase <git@tim.thechases.com> writes:
Show 19 quoted lines
> On 08/21/12 10:22, Thomas Rast wrote:
>> Tim Chase <git@tim.thechases.com> writes:
>> 
>>> diff.{type}.xfuncname seems to start searching backwards in
>>> from the beginning of the hunk, not the first differing line.
>> [...]
>>>   @@ -4,4 +4,5 @@ int call_me(int maybe)
>>>
>>>    int main()
>>>    {
>>>   +  return 0;
>>>    }
>>>
>>> misleadingly suggesting that the change occurred in the call_me()
>>> function, rather than in main()
>> 
>> I think that's intentional, and matches what 'diff -p' does.  It gives
>> you the context before the hunk.  After all, if a new function starts in
>> the leading context lines, you can see that in the usual diff data.

Correct. It is about "give the user _more_ hint/clue on the context of the hunk", in addition to what the user can see in the pre-context of the hunk, so it is pointless to hoist "int main()" there.

> ...  It just makes it hard for me to gather some stats on the
> functions that changed, and requires that I look in more than one
> place (both in the header, and in the leading context) rather than
> having a single authoritative place to grep.

The right way to answer "which functions were touched?" question is to ignore what you see on the hunk header "@@ .. @@" lines and only look at the patch text, running "git diff" with larger number of context lines as necessary.

If you have a large patch hunk that adds or removes two or more new functions, you would have to look at the patch text _anyway_ to learn about these two or more names---they cannot possibly both appear on the hunk header lines, so looking at the context hint there is pointless for the purpose for which you are using "diff" output.

Previous: Junio C HamanoNext: Jeff King
Message 6 of 14 in “misleading diff-hunk header”
  1. Tim ChaseAug 21, 2012
  2. Thomas RastAug 21, 2012
  3. Tim ChaseAug 21, 2012
  4. Johannes SixtAug 21, 2012
  5. Junio C HamanoAug 21, 2012
  6. Junio C HamanoAug 21, 2012
  7. Jeff KingAug 24, 2012
  8. Tim ChaseAug 24, 2012
  9. Jeff KingAug 24, 2012
  10. Tim ChaseAug 25, 2012
  11. Junio C HamanoAug 25, 2012
  12. Tim ChaseAug 25, 2012
  13. Stefano LattariniAug 26, 2012
  14. Junio C HamanoAug 26, 2012

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.