Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
An example .gitattributes file that will configure custom hunk header patterns for some common languages and file formats. See for more details.
# Stick this in your home directory and point your Global Git config at it by running:
# $ git config --global core.attributesfile ~/.gitattributes
# See for more details
*.c diff=cpp
*.h diff=cpp
*.c++ diff=cpp
*.h++ diff=cpp
*.cpp diff=cpp
*.hpp diff=cpp
*.cc diff=cpp
*.hh diff=cpp
*.m diff=objc
*.mm diff=objc
*.cs diff=csharp
*.css diff=css
*.html diff=html
*.xhtml diff=html
*.ex diff=elixir
*.exs diff=elixir
*.go diff=golang
*.php diff=php
*.pl diff=perl
*.py diff=python
*.md diff=markdown
*.rb diff=ruby
*.rake diff=ruby
*.rs diff=rust
*.lisp diff=lisp
*.el diff=lisp
# Additional manually-configured matchers you may want to add to your .gitconfig
[diff "rspec"]
xfuncname = "^[ \t]*((RSpec|describe|context|it|before|after|around|feature|scenario|background)[ \t].*)$"
[diff "swift"]
xfuncname = ^[ \t]*((class|func)[ \t].*)$
Copy link

citizen428 commented Oct 20, 2020

@Rafi993 There aren't any defined regex for ERb in the git source, so it's either HTML or nothing.

Copy link

Rafi993 commented Oct 20, 2020

Thank you @citizen428

I think you mentioned some other user by accident :)

Copy link

triwats commented Oct 20, 2020

This is great, thanks a lot! Super useful if you're using a less rich editor such as Vim and working mainly out of a terminal.

Copy link

jimryan commented Oct 22, 2020

Thank you so much for this! I work with rspec and capybara a lot and found using the built-in ruby diff for spec files broke the hunk header entirely for them, so I wrote my own regex for specs based on the native ruby regex:

# .gitconfig

[diff "rspec"]
        xfuncname = "^[ \t]*((RSpec|describe|context|it|before|after|around|feature|scenario|background)[ \t].*)$"

You can then use "rspec" as a diff driver:

# .gitattributes

*.rb       diff=ruby
*_spec.rb  diff=rspec

Copy link

tekin commented Oct 22, 2020

@jimryan that’s super cool, thanks for sharing!

Copy link

zubin commented Oct 22, 2020

@jimryan Might want to add around too. Thanks!

Copy link

jimryan commented Oct 22, 2020

@zubin Good point! I've updated the snippet above. Thanks!

Copy link

ulwlu commented Oct 30, 2020

Thank you for a great tip.
I found this gist as well and comment here for additional info.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment