Skip to content

Commit 2f07b65

Browse files
tamirdakpm00
authored andcommitted
checkpatch: always parse orig_commit in fixes tag
Do not require the presence of `$balanced_parens` to get the commit SHA; this allows a `Fixes: deadbeef` tag to get a correct suggestion rather than a suggestion containing a reference to HEAD. Given this patch: : From: Tamir Duberstein <[email protected]> : Subject: Test patch : Date: Fri, 25 Oct 2024 19:30:51 -0400 : : This is a test patch. : : Fixes: bd17e03 : Signed-off-by: Tamir Duberstein <[email protected]> : --- /dev/null : +++ b/new-file : @@ -0,0 +1 @@ : +Test. Before: WARNING: Please use correct Fixes: style 'Fixes: <12 chars of sha1> ("<title line>")' - ie: 'Fixes: c10a7d25e68f ("Test patch")' After: WARNING: Please use correct Fixes: style 'Fixes: <12 chars of sha1> ("<title line>")' - ie: 'Fixes: bd17e03 ("checkpatch: warn for non-standard fixes tag style")' The prior behavior incorrectly suggested the patch's own SHA and title line rather than the referenced commit's. This fixes that. Ironically this: Fixes: bd17e03 ("checkpatch: warn for non-standard fixes tag style") Signed-off-by: Tamir Duberstein <[email protected]> Cc: Andy Whitcroft <[email protected]> Cc: Dwaipayan Ray <[email protected]> Cc: Joe Perches <[email protected]> Cc: Louis Peens <[email protected]> Cc: Lukas Bulwahn <[email protected]> Cc: Niklas Söderlund <[email protected]> Cc: Philippe Schenker <[email protected]> Cc: Simon Horman <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
1 parent 013a070 commit 2f07b65

File tree

1 file changed

+16
-21
lines changed

1 file changed

+16
-21
lines changed

scripts/checkpatch.pl

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3209,36 +3209,31 @@ sub process {
32093209

32103210
# Check Fixes: styles is correct
32113211
if (!$in_header_lines &&
3212-
$line =~ /^\s*fixes:?\s*(?:commit\s*)?[0-9a-f]{5,}\b/i) {
3213-
my $orig_commit = "";
3214-
my $id = "0123456789ab";
3215-
my $title = "commit title";
3216-
my $tag_case = 1;
3217-
my $tag_space = 1;
3218-
my $id_length = 1;
3219-
my $id_case = 1;
3212+
$line =~ /^\s*(fixes:?)\s*(?:commit\s*)?([0-9a-f]{5,40})(?:\s*($balanced_parens))?/i) {
3213+
my $tag = $1;
3214+
my $orig_commit = $2;
3215+
my $title;
32203216
my $title_has_quotes = 0;
32213217
$fixes_tag = 1;
3222-
3223-
if ($line =~ /(\s*fixes:?)\s+([0-9a-f]{5,})\s+($balanced_parens)/i) {
3224-
my $tag = $1;
3225-
$orig_commit = $2;
3226-
$title = $3;
3227-
3228-
$tag_case = 0 if $tag eq "Fixes:";
3229-
$tag_space = 0 if ($line =~ /^fixes:? [0-9a-f]{5,} ($balanced_parens)/i);
3230-
3231-
$id_length = 0 if ($orig_commit =~ /^[0-9a-f]{12}$/i);
3232-
$id_case = 0 if ($orig_commit !~ /[A-F]/);
3233-
3218+
if (defined $3) {
32343219
# Always strip leading/trailing parens then double quotes if existing
3235-
$title = substr($title, 1, -1);
3220+
$title = substr($3, 1, -1);
32363221
if ($title =~ /^".*"$/) {
32373222
$title = substr($title, 1, -1);
32383223
$title_has_quotes = 1;
32393224
}
3225+
} else {
3226+
$title = "commit title"
32403227
}
32413228

3229+
3230+
my $tag_case = not ($tag eq "Fixes:");
3231+
my $tag_space = not ($line =~ /^fixes:? [0-9a-f]{5,40} ($balanced_parens)/i);
3232+
3233+
my $id_length = not ($orig_commit =~ /^[0-9a-f]{12}$/i);
3234+
my $id_case = not ($orig_commit !~ /[A-F]/);
3235+
3236+
my $id = "0123456789ab";
32423237
my ($cid, $ctitle) = git_commit_info($orig_commit, $id,
32433238
$title);
32443239

0 commit comments

Comments
 (0)