Skip to content

Instantly share code, notes, and snippets.

Embed
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 https://tekin.co.uk/2020/10/better-git-diff-output-for-ruby-python-elixir-and-more 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 https://tekin.co.uk/2020/10/better-git-diff-output-for-ruby-python-elixir-and-more 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].*)$
@jimryan
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

@tekin
Copy link
Author

tekin commented Oct 22, 2020

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

@zubin
Copy link

zubin commented Oct 22, 2020

@jimryan Might want to add around too. Thanks!

@jimryan
Copy link

jimryan commented Oct 22, 2020

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

@ulwlu
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.

https://gist.github.com/ruediger/5647207

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