git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Phillip Wood <phillip.wood123@gmail.com>
To: Abhijeetsingh Meena via GitGitGadget <gitgitgadget@gmail.com>,
	git@vger.kernel.org
Cc: Abhijeetsingh Meena <abhijeetsingh.github@gmail.com>,
	Abhijeetsingh Meena <abhijeet040403@gmail.com>,
	Kristoffer Haugsbakk <code@khaugsbakk.name>
Subject: Re: [PATCH] blame: respect .git-blame-ignore-revs automatically
Date: Tue, 8 Oct 2024 10:51:01 +0100	[thread overview]
Message-ID: <8d27ea8e-4562-4fcc-a7b3-399abc42135b@gmail.com> (raw)
In-Reply-To: <pull.1809.git.1728370892696.gitgitgadget@gmail.com>

Hi Abhijeetsingh

On 08/10/2024 08:01, Abhijeetsingh Meena via GitGitGadget wrote:
> From: Abhijeetsingh Meena <abhijeet040403@gmail.com>
> 
> Modify `git blame` to automatically respect a `.git-blame-ignore-revs`
> file if it exists in the repository. This file is used by many projects
> to ignore non-functional changes, such as reformatting or large-scale
> refactoring, when generating blame information.
> 
> Before this change, users had to manually specify the file with the
> `--ignore-revs-file` option. This update streamlines the process by
> automatically detecting the `.git-blame-ignore-revs` file, reducing
> manual effort.

As Kristoffer mentioned there is a config option so that the user does 
not have to specify the file each time. The decision not to support a 
default file for this feature was deliberate [1,2]. It is possible that 
we now have enough experience with the feature that we think it would be 
a good idea but any such change would need to address the concerns about 
ignoring "cleanup" commits that introduce bugs. If we do decide to 
support a default file we'd need to work out how it interacted with the 
config setting and make sure there was an easy way to turn the feature off.

Best Wishes

Phillip

[1] 
https://lore.kernel.org/git/c34159af-f97e-82b3-e2a1-04adae5c10ac@google.com/
[2] https://lore.kernel.org/git/YLfe+HXl4hkzs44b@nand.local/

> This change aligns with the standardized practice in many repositories
> and simplifies the workflow for users.
> 
> Signed-off-by: Abhijeetsingh Meena <abhijeet040403@gmail.com>
> ---
>      blame: respect .git-blame-ignore-revs automatically
>      
>      
>      Introduction
>      ============
>      
>      Hi, I'm Abhijeet (Ethan0456), and this is my first contribution to the
>      Git project. I currently work as an ML Engineer at an early-stage
>      startup, and I’m excited to contribute to this open-source project.
>      
>      
>      Why the Change?
>      ===============
>      
>      I came across this enhancement request on the bug tracker and found it
>      beginner-friendly, making it a great opportunity for me to get familiar
>      with the Git codebase. The ability for git blame to automatically
>      respect the .git-blame-ignore-revs file is something that can streamline
>      workflows for many users, and I felt it would be a valuable addition.
>      
>      
>      Feedback
>      ========
>      
>      While I’m confident in the changes made to builtin/blame.c and the new
>      test case in t/t8015-blame-ignore-revs.sh, I welcome any feedback or
>      suggestions to improve both my code and approach. I’m eager to learn
>      from the community and improve where needed.
>      
>      
>      Community Need
>      ==============
>      
>      There is precedent for this functionality in other projects:
>      
>       * Chromium
>         [https://chromium.googlesource.com/chromium/src.git/+/f0596779e57f46fccb115a0fd65f0305894e3031/.git-blame-ignore-revs],
>         which powers many popular browsers, uses .git-blame-ignore-revs to
>         simplify the blame process by ignoring non-functional changes.
>       * Rob Allen's blog post
>         [https://akrabat.com/ignoring-revisions-with-git-blame/] discusses
>         the need for ignoring revisions with git blame, and a commenter
>         specifically suggests that it would be helpful if Git automatically
>         respected .git-blame-ignore-revs.
>      
>      I hope this change aligns with community needs and improves the git
>      blame experience for users.
> 
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1809%2FEthan0456%2Fblame-auto-ignore-revs-v1
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1809/Ethan0456/blame-auto-ignore-revs-v1
> Pull-Request: https://github.com/gitgitgadget/git/pull/1809
> 
>   builtin/blame.c                      |  8 ++++++++
>   t/t8015-blame-default-ignore-revs.sh | 26 ++++++++++++++++++++++++++
>   2 files changed, 34 insertions(+)
>   create mode 100755 t/t8015-blame-default-ignore-revs.sh
> 
> diff --git a/builtin/blame.c b/builtin/blame.c
> index e407a22da3b..1eddabaf60f 100644
> --- a/builtin/blame.c
> +++ b/builtin/blame.c
> @@ -1105,6 +1105,14 @@ parse_done:
>   		add_pending_object(&revs, &head_commit->object, "HEAD");
>   	}
>   
> +	/*
> +	* By default, add .git-blame-ignore-revs to the list of files
> +	* containing revisions to ignore if it exists.
> +	*/
> +	if (access(".git-blame-ignore-revs", F_OK) == 0) {
> +		string_list_append(&ignore_revs_file_list, ".git-blame-ignore-revs");
> +	}
> +
>   	init_scoreboard(&sb);
>   	sb.revs = &revs;
>   	sb.contents_from = contents_from;
> diff --git a/t/t8015-blame-default-ignore-revs.sh b/t/t8015-blame-default-ignore-revs.sh
> new file mode 100755
> index 00000000000..84e1a9e87e6
> --- /dev/null
> +++ b/t/t8015-blame-default-ignore-revs.sh
> @@ -0,0 +1,26 @@
> +#!/bin/sh
> +
> +test_description='default revisions to ignore when blaming'
> +
> +TEST_PASSES_SANITIZE_LEAK=true
> +. ./test-lib.sh
> +
> +test_expect_success 'blame: default-ignore-revs-file' '
> +    test_commit first-commit hello.txt hello &&
> +
> +    echo world >>hello.txt &&
> +    test_commit second-commit hello.txt &&
> +
> +    sed "1s/hello/hi/" <hello.txt > hello.txt.tmp &&
> +    mv hello.txt.tmp hello.txt &&
> +    test_commit third-commit hello.txt &&
> +
> +    git rev-parse HEAD >ignored-file &&
> +    git blame --ignore-revs-file=ignored-file hello.txt >expect &&
> +    git rev-parse HEAD >.git-blame-ignore-revs &&
> +    git blame hello.txt >actual &&
> +
> +    test_cmp expect actual
> +'
> +
> +test_done
> \ No newline at end of file
> 
> base-commit: 777489f9e09c8d0dd6b12f9d90de6376330577a2


  parent reply	other threads:[~2024-10-08  9:51 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-08  7:01 [PATCH] blame: respect .git-blame-ignore-revs automatically Abhijeetsingh Meena via GitGitGadget
2024-10-08  9:07 ` Kristoffer Haugsbakk
2024-10-08  9:51 ` Phillip Wood [this message]
     [not found] ` <pull.1809.v2.git.1728397437637.gitgitgadget@gmail.com>
     [not found]   ` <CAAirc3j2MfLyiNVnseRmTsDDu6R4gkcms1GXk=9_jAVLvEYaUg@mail.gmail.com>
     [not found]     ` <CAAirc3gX=PBixcyR0NRyRDnrydkeeu8A9or90c8MSUdHQ6uo=w@mail.gmail.com>
2024-10-08 16:12       ` [PREVIEW v2] " Abhijeetsingh Meena
2024-10-08 16:12         ` Abhijeetsingh Meena
2024-10-12  4:37 ` [PATCH v2 0/2] " Abhijeetsingh Meena via GitGitGadget
2024-10-12  4:37   ` [PATCH v2 1/2] " Abhijeetsingh Meena via GitGitGadget
2024-10-12  6:07     ` Eric Sunshine
2024-10-12  6:43       ` Eric Sunshine
2024-10-14 21:08       ` Taylor Blau
2024-10-16  6:04       ` Abhijeetsingh Meena
2024-10-12 13:58     ` Kristoffer Haugsbakk
2024-10-13 15:25       ` Phillip Wood
2024-10-14 21:00         ` Kristoffer Haugsbakk
2024-10-16  6:06       ` Abhijeetsingh Meena
2024-10-13 15:18     ` Phillip Wood
2024-10-16  6:07       ` Abhijeetsingh Meena
2024-10-22  6:49         ` Abhijeetsingh Meena
2024-10-22  7:54           ` Eric Sunshine
2024-10-12  4:37   ` [PATCH v2 2/2] blame: introduce --override-ignore-revs to bypass ignore revisions list Abhijeetsingh Meena via GitGitGadget
2024-10-12  6:24     ` Eric Sunshine
2024-10-12  6:26       ` Eric Sunshine
2024-10-12 14:25     ` Kristoffer Haugsbakk
2024-10-13 15:20     ` Phillip Wood

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8d27ea8e-4562-4fcc-a7b3-399abc42135b@gmail.com \
    --to=phillip.wood123@gmail.com \
    --cc=abhijeet040403@gmail.com \
    --cc=abhijeetsingh.github@gmail.com \
    --cc=code@khaugsbakk.name \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=phillip.wood@dunelm.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).