Re: [PATCH v2] blame: print unblamable and ignored commits in porcelain mode
Eric Sunshine <sunshine@sunshineco.com> writes:
Show 28 quoted lines
> On Wed, Mar 26, 2025 at 5:07 PM Karthik Nayak <karthik.188@gmail.com> wrote:
>> 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" '
>
What a silly miss. Thanks for pointing out.
Show 17 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" '
>
Yup, this needs to be fixed too. Thanks again.
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
>> + '