git: change styling (whitespace) without changing ownership/blame?
In an ideal world there would be some way to rewrite history to look like the violations were never introduced
git filter-branch
does precisely that.
http://git-scm.com/docs/git-filter-branch
This has the same issues as all history rewriting commands do, as it essentially invalidates all cloned repositories.
Building on Mario's answer, I would suggest git shame
as a global git-alias:
git config --global alias.shame 'blame -w -M'
...and use it instead of git-blame:
git shame path/to/file
To explain:
-w
Ignores whitespace changes, so not to blame someone who re-indented the code-M
Detects lines that were moved or copied, and blames the original author
EDIT:
Some argue that the -M
is misleading, blaming the wrong person
(i.e.: don't blame me if someone rearranged what I wrote).
If you feel the same, please use the original suggestion: git slap
If you are trying to get a Root Cause issue using blame, don't forget use the -w
flag to ignore all the white-spaces or indentation changes. So you'll get the last real change to the code, instead just an indentation, or removing trailing spaces.
git blame -w app/to/file.rb
or you can just use, git slap command..
git config alias.slap "blame -w";
git slap app/path/to/file.rb
having same results :D