Re: git diff annoyance / feature request
- From
Jeff King <peff@peff.net>
- Date
- Aug 25, 2011, 20:00 UTC
- Message-ID
- <20110825200001.GA6165@sigill.intra.peff.net>
- In-Reply-To
- <4E569F10.8060808@panasas.com>
On Thu, Aug 25, 2011 at 12:14:24PM -0700, Boaz Harrosh wrote:
Show 7 quoted lines
> git diff has this very annoying miss-fixture where it will state > as hunk header the closest label instead of the function name. > [...] > > I bet all this was just inherited from diff. Would it be accepted if > I send a patch to fix it? What you guys think a goto label makes any > sense at all?
Unless you tell git what type of content is in your file, it uses the same basic heuristics for finding a hunk-header line that diff does. Namely, the most recent line that starts with an alphabetic character, underscore, or dollar sign.
If you want language-specific hunk headers, you can use gitattributes to tell git what's in your files. We already have a builtin C driver that will do what you want. You just need to do[1]:
echo '*.c diff=cpp' >.gitattributes
Note that it handles both C and C++, hence the name. See "git help gitattributes" for details (the section "Defining a custom hunk-header" is what you want).
If your upstream (which looks like linux-2.6) doesn't want .gitattributes files in the repository, you can also put the entry into .git/info/attributes.
-Peff
[1] Since we have builtin funcname patterns for many types, we arguably could also have a builtin mapping of common extensions to diff drivers.