Re: feature request: .blameignore
- Date: Mon, 15 Apr 2019 22:15:19 +0100
- From: Thomas Gummerer <t.gummerer@xxxxxxxxx>
- Subject: Re: feature request: .blameignore
On 04/15, Christian González wrote:
> Hello git community,
> I'm completely new here, and maybe my request is dumb, has already a
> better solution, or I did not fully understand git. Please tell my if
> so. I stumbled upon this idea while following the django developers
> mailing list, people there discussing whether nor not to adopt *black*
> (https://github.com/ambv/black, a python code formatting tool) as
> enhancement in the development cycle. One of the main arguments against
> black was that it changes git history by masking git blame. Whenever a
> git commit with only a black formatting change is committed, you can't
> easily see using git blame WHO did actially write a line of code
> *before* that commit. It is possible to look further manually, and they
> said there are tools like git-hyper-blame that circumvent that problem,
> but I always asked myself since I use git, why isn't there a simple
> possibility how I can e.g. fix a whitespace code "error", or do a code
> reformatting WITHOUT taking away the original author's credits for that
> I know, there are some counter arguments about that: e.g. whitespace
> changes could lead to programming errors too, even to compiler errors,
> depending on the language, and how the compiler engine treats whitespace.
> I don't suggest git to ignore whitespace (or whatever) changes in the
> blame history automatically.
> What I suggest is: let git accept a file like .blameignore,
> .gitblameignore, .gitblame etc., you name it.
> In my simply suggest, I would see that file as one-hash-per-line that is
> ignored by git blame. And for the sake of convenience, add a git option
> to add that hash automatically:
This sounds roughly like what Barret Rhoden (added to Cc) has been
working on. I haven't followed that patch series in detail, but you
can have a look at it atthe latest iteration at
> git commit -m "fix whitespace" --blame-ignore
> This would add this commit's hash to the .gitblameignore (or whatever) file:
> 4070ddcdd3d3cc45ec7952e1b37ab374aed9083c # fix whitespace
> and a "git blame any_file.txt" would ignore this one commit and show the
> last commit's author of changed lines.
> Even better would it be to allow chunks to be excluded, because bad
> commit habits of whitespace AND real code changes at the same time are
> not possible to undo later - except there would be a .gitblameignore file.
> It would even be possible to incorporate this into tht .gitignore file,
> with a section, or a certain prefix...
> IMHO, this would allow better per-project maintainance of blame history
> which could be changed later in time and re-fixed if done wrong - all
> within git history itself.
> I'd love to hear what you think about that.
> Dr. Christian González
> +43 (0) 650 7644477
[-- Error: unable to create PGP subprocess! --]