Re: [RFC][PATCH] checkpatch: Properly warn if Change-Id comes after first Signed-off-by line

From: John Stultz
Date: Tue Feb 25 2020 - 16:33:40 EST


On Tue, Feb 25, 2020 at 12:16 PM Joe Perches <joe@xxxxxxxxxxx> wrote:
> On Tue, 2020-02-25 at 09:45 -0800, John Stultz wrote:
> > On Mon, Feb 24, 2020 at 10:50 PM Joe Perches <joe@xxxxxxxxxxx> wrote:
> > > > Since I have a few kernel repos that I use for both upstream work and
> > > > work targeting AOSP trees, I usually have the gerrit commit hook
> > > > enabled in my tree (its easier to strip with sed then it is to re-add
> > > > after submitting to gerrit), and at least the commit-msg hook I have
> > > > will usually append a Change-Id: line at the end of the commit
> > > > message, usually after the signed-off-by line.
>
> I think this better still:
>
> ---
> scripts/checkpatch.pl | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 3d55d8a2a..d0f850e 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -2343,6 +2343,7 @@ sub process {
> my $is_binding_patch = -1;
> my $in_header_lines = $file ? 0 : 1;
> my $in_commit_log = 0; #Scanning lines before patch
> + my $has_patch_separator = 0; #Found a --- line
> my $has_commit_log = 0; #Encountered lines before patch
> my $commit_log_lines = 0; #Number of commit log lines
> my $commit_log_possible_stack_dump = 0;
> @@ -2668,6 +2669,12 @@ sub process {
> }
> }
>
> +# Check for patch separator
> + if ($line =~ /^---$/) {
> + $has_patch_separator = 1;
> + $in_commit_log = 0;
> + }
> +
> # Check if MAINTAINERS is being updated. If so, there's probably no need to
> # emit the "does MAINTAINERS need updating?" message on file add/move/delete
> if ($line =~ /^\s*MAINTAINERS\s*\|/) {
> @@ -2767,10 +2774,10 @@ sub process {
> "A patch subject line should describe the change not the tool that found it\n" . $herecurr);
> }
>
> -# Check for unwanted Gerrit info
> - if ($in_commit_log && $line =~ /^\s*change-id:/i) {
> +# Check for Gerrit Change-Ids not in any patch context
> + if ($realfile eq '' && !$has_patch_separator && $line =~ /^\s*change-id:/i) {
> ERROR("GERRIT_CHANGE_ID",
> - "Remove Gerrit Change-Id's before submitting upstream.\n" . $herecurr);
> + "Remove Gerrit Change-Id's before submitting upstream\n" . $herecurr);
> }
>
> # Check if the commit log is in a possible stack dump

This one works well for me too.
Tested-by: John Stultz <john.stultz@xxxxxxxxxx>

Thanks so much!
-john