Subject: [PATCH v2 0/2] blame: respect .git-blame-ignore-revs automatically

From: "Abhijeetsingh Meena via GitGitGadget" <[email-masked]>
Date: Sat, 12 Oct 2024 04:37:45 +0000

Summary
=======

This patch introduces the ability for git blame to automatically respect the
.git-blame-ignore-revs file, which can help users streamline their workflows
by ignoring revisions for non-functional changes.

The feature is inspired by similar practices in other projects like
Chromium, and it aligns with needs expressed by users in discussions around
revision-ignoring mechanisms for git blame.

I have incorporated suggestions provided during the review of patch v1,
including improvements to the commit message and addressing how to override
ignore revisions using a new option.

Patch Updates and Improvements
==============================

Changes since v1
================

 * Updated the commit message for the first patch. I incorporated
   Kristoffer’s suggestions by directly using the example he provided,
   ensuring the commit message aligns with the project's standards.
 * Attempted to use --no-ignore-revs-file to bypass the
   .git-blame-ignore-revs file, but observed that it did not ignore the
   specified revisions.
 * Introduced the --override-ignore-revs option (short form: -O) as a
   straightforward method to override any configured revision ignores,
   providing users with more control.
 * For the second commit, I applied Kristoffer’s feedback in writing the
   commit message to ensure consistency and clarity.

Abhijeetsingh Meena (2):
  blame: respect .git-blame-ignore-revs automatically
  blame: introduce --override-ignore-revs to bypass ignore revisions
    list

 builtin/blame.c                       | 16 +++++++++++++++-
 t/t8015-blame-default-ignore-revs.sh  | 26 ++++++++++++++++++++++++++
 t/t8016-blame-override-ignore-revs.sh | 25 +++++++++++++++++++++++++
 3 files changed, 66 insertions(+), 1 deletion(-)
 create mode 100755 t/t8015-blame-default-ignore-revs.sh
 create mode 100755 t/t8016-blame-override-ignore-revs.sh

base-commit: ef8ce8f3d4344fd3af049c17eeba5cd20d98b69f
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1809%2FEthan0456%2Fblame-auto-ignore-revs-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1809/Ethan0456/blame-auto-ignore-revs-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/1809

Range-diff vs v1:

 1:  666404681d9 ! 1:  4ed930cab1b blame: respect .git-blame-ignore-revs automatically
     @@ Metadata
       ## Commit message ##
          blame: respect .git-blame-ignore-revs automatically
      
     -    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.
     +    git-blame(1) can ignore a list of commits with `--ignore-revs-file`.
     +    This is useful for marking uninteresting commits like formatting
     +    changes, refactors and whatever else should not be “blamed”.  Some
     +    projects even version control this file so that all contributors can
     +    use it; the conventional name is `.git-blame-ignore-revs`.
      
     -    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.
     -
     -    This change aligns with the standardized practice in many repositories
     -    and simplifies the workflow for users.
     +    But each user still has to opt-in to the standard ignore list,
     +    either with this option or with the config `blame.ignoreRevsFile`.
     +    Let’s teach git-blame(1) to respect this conventional file in order
     +    to streamline the process.
      
          Signed-off-by: Abhijeetsingh Meena <[email-masked]>
      
     @@ t/t8015-blame-default-ignore-revs.sh (new)
      +'
      +
      +test_done
     - \ No newline at end of file
 -:  ----------- > 2:  8d2fa3af796 blame: introduce --override-ignore-revs to bypass ignore revisions list

-- 
gitgitgadget