Re: [PATCH v2] blame: print unblamable and ignored commits in porcelain mode
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Mar 26, 2025, 22:49 UTC
- Message-ID
- <CAPig+cRLXDohGG0RLpC41hy=rTmbmNQ_qScFWMv2LP8pdM8_hg@mail.gmail.com>
- In-Reply-To
- <20250326-514-git-blame-1-s-porcelain-output-does-not-emit-unblamable-and-ignored-markers-v2-1-79037e17a74b@gmail.com>
On Wed, Mar 26, 2025 at 5:07 PM Karthik Nayak <karthik.188@gmail.com> wrote:
Show 20 quoted lines
> The 'git-blame(1)' command allows users to ignore specific revisions via > the '--ignore-rev <rev>' and '--ignore-revs-file <file>' flags. These > flags are often combined with the 'blame.markIgnoredLines' and > 'blame.markUnblamableLines' config options. These config options prefix > ignored and unblamable lines with a '?' and '*', respectively. > > However, this option was never extended to the porcelain mode of > 'git-blame(1)'. Since the documentation does not indicate this > exclusion, it is a bug. > > Fix this by printing 'ignored' and 'unblamable' respectively for the > options when using the porcelain modes. > > Signed-off-by: Karthik Nayak <karthik.188@gmail.com> > --- > diff --git a/t/t8013-blame-ignore-revs.sh b/t/t8013-blame-ignore-revs.sh > @@ -158,6 +158,16 @@ test_expect_success mark_unblamable_lines ' > +for opt in --porcelain --line-porcelain > +do > + test_expect_success 'mark_unblamable_lines with $opt' '
This test title is going to display literal "$opt" rather than the intended option. Fix this by replacing the single quotes with double quotes:
test_expect_success "mark_unblamable_lines with $opt" '
Show 10 quoted lines
> + sha=$(git rev-parse Y) && > + > + git -c blame.markUnblamableLines=true blame $opt --ignore-rev Y file >actual && > + test $(grep ^unblamable actual | wc -l) -eq 2 > + ' > +done > @@ -191,6 +201,16 @@ test_expect_success mark_ignored_lines ' > +for opt in --porcelain --line-porcelain > +do > + test_expect_success 'mark_ignored_lines line_porcelain' '
Similarly, this is going to display the same title for both cases, which isn't as helpful as it could be. Presumably, you instead wanted this (using double quotes):
test_expect_success "mark_ignored_lines with $opt" '
Show 5 quoted lines
> + sha=$(git rev-parse Y) && > + > + git -c blame.markIgnoredLines=true blame $opt --ignore-rev Z file >actual && > + test $(grep ^ignored actual | wc -l) -eq 2 > + '