Signed-off-by: Andrew Donnellan <andrew.donnel...@au1.ibm.com> ---
RFC because I'm bad at Perl --- scripts/checkpatch.pl | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index aca4d758112a..ae7a54287db7 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -2662,40 +2662,46 @@ sub process { my $id = '0123456789ab'; my $orig_desc = "commit description"; my $description = ""; + my $ref_line = $line; - if ($line =~ /\b(c)ommit\s+([0-9a-f]{5,})\b/i) { + if ($ref_line =~ /\b(c)ommit\s+([0-9a-f]{5,})\b/i) { $init_char = $1; $orig_commit = lc($2); - } elsif ($line =~ /\b([0-9a-f]{12,40})\b/i) { + } elsif ($ref_line =~ /\b([0-9a-f]{12,40})\b/i) { $orig_commit = lc($1); + if (defined $rawlines[$linenr - 2] && + $rawlines[$linenr - 2] =~ /\bcommit$/) { + $ref_line = "commit " . $ref_line; + } } - $short = 0 if ($line =~ /\bcommit\s+[0-9a-f]{12,40}/i); - $long = 1 if ($line =~ /\bcommit\s+[0-9a-f]{41,}/i); - $space = 0 if ($line =~ /\bcommit [0-9a-f]/i); - $case = 0 if ($line =~ /\b[Cc]ommit\s+[0-9a-f]{5,40}[^A-F]/); - if ($line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("([^"]+)"\)/i) { + $short = 0 if ($ref_line =~ /\bcommit\s+[0-9a-f]{12,40}/i); + $long = 1 if ($ref_line =~ /\bcommit\s+[0-9a-f]{41,}/i); + $space = 0 if ($ref_line =~ /\bcommit [0-9a-f]/i); + $case = 0 if ($ref_line =~ /\b[Cc]ommit\s+[0-9a-f]{5,40}[^A-F]/); + + if ($ref_line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("([^"]+)"\)/i) { # Reference fits on 1 line $orig_desc = $1; $hasparens = 1; - } elsif ($line =~ /\bcommit\s+[0-9a-f]{5,}\s*$/i && + } elsif ($ref_line =~ /\bcommit\s+[0-9a-f]{5,}\s*$/i && defined $rawlines[$linenr] && $rawlines[$linenr] =~ /^\s*\("([^"]+)"\)/) { # line 1: 'commit <hash>', # line 2: '("description")' $orig_desc = $1; $hasparens = 1; - } elsif ($line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("[^"]+$/i && + } elsif ($ref_line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("[^"]+$/i && defined $rawlines[$linenr] && $rawlines[$linenr] =~ /^\s*[^"]+"\)/) { # line 1: 'commit <hash> ("description', # line 2: 'description continued")' - $line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("([^"]+)$/i; + $ref_line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("([^"]+)$/i; $orig_desc = $1; $rawlines[$linenr] =~ /^\s*([^"]+)"\)/; $orig_desc .= " " . $1; $hasparens = 1; - } elsif ($line =~ /\bcommit\s+[0-9a-f]{5,}\s*$/i && + } elsif ($ref_line =~ /\bcommit\s+[0-9a-f]{5,}\s*$/i && defined $rawlines[$linenr] && defined $rawlines[$linenr + 1] && $rawlines[$linenr] =~ /^\s*\("[^"]+/ && @@ -2708,7 +2714,7 @@ sub process { $rawlines[$linenr + 1] =~ /^\s*([^"]+)"\)/; $orig_desc .= " " . $1; $hasparens = 1; - } elsif ($line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("[^"]+$/i && + } elsif ($ref_line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("[^"]+$/i && defined $rawlines[$linenr] && defined $rawlines[$linenr + 1] && $rawlines[$linenr] =~ /^\s*[^"]+$/ && @@ -2716,7 +2722,7 @@ sub process { # line 1: 'commit <hash> ("description', # line 2: 'description continued' # line 3: 'description continued")' - $line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("([^"]+)$/i; + $ref_line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("([^"]+)$/i; $orig_desc = $1; $rawlines[$linenr] =~ /^\s*([^"]+)$/; $orig_desc .= " " . $1; -- 2.11.0