diff mbox

checkpatch: consider git extended headers valid patches

Message ID 1468576014-28788-1-git-send-email-stefanha@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Stefan Hajnoczi July 15, 2016, 9:46 a.m. UTC
Renames look like this with git-diff(1) when diff.renames = true is set:

  diff --git a/a b/b
  similarity index 100%
  rename from a
  rename to b

This raises the "Does not appear to be a unified-diff format patch"
error because checkpatch.pl only considers a diff valid if it contains
at least one "@@" hunk.

This patch accepts renames and copies too so that checkpatch.pl exits
successfully when a diff only renames/copies files.  The git diff
extended header format is described on the git-diff(1) man page.

Reported-by: Colin Lord <clord@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 scripts/checkpatch.pl | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Eric Blake July 15, 2016, 5:52 p.m. UTC | #1
On 07/15/2016 03:46 AM, Stefan Hajnoczi wrote:
> Renames look like this with git-diff(1) when diff.renames = true is set:
> 
>   diff --git a/a b/b
>   similarity index 100%
>   rename from a
>   rename to b
> 
> This raises the "Does not appear to be a unified-diff format patch"
> error because checkpatch.pl only considers a diff valid if it contains
> at least one "@@" hunk.
> 
> This patch accepts renames and copies too so that checkpatch.pl exits
> successfully when a diff only renames/copies files.  The git diff
> extended header format is described on the git-diff(1) man page.
> 
> Reported-by: Colin Lord <clord@redhat.com>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>  scripts/checkpatch.pl | 5 +++++
>  1 file changed, 5 insertions(+)

Reviewed-by: Eric Blake <eblake@redhat.com>

and especially nice since we recommend diff.renames = true in our patch
submission guidelines.
Stefan Hajnoczi July 18, 2016, 12:15 p.m. UTC | #2
On Fri, Jul 15, 2016 at 10:46:54AM +0100, Stefan Hajnoczi wrote:
> Renames look like this with git-diff(1) when diff.renames = true is set:
> 
>   diff --git a/a b/b
>   similarity index 100%
>   rename from a
>   rename to b
> 
> This raises the "Does not appear to be a unified-diff format patch"
> error because checkpatch.pl only considers a diff valid if it contains
> at least one "@@" hunk.
> 
> This patch accepts renames and copies too so that checkpatch.pl exits
> successfully when a diff only renames/copies files.  The git diff
> extended header format is described on the git-diff(1) man page.
> 
> Reported-by: Colin Lord <clord@redhat.com>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>  scripts/checkpatch.pl | 5 +++++
>  1 file changed, 5 insertions(+)

There is no maintainer for checkpatch.pl, so...

Thanks, applied to my block tree:
https://github.com/stefanha/qemu/commits/block

Stefan
Paolo Bonzini July 18, 2016, 1:15 p.m. UTC | #3
On 18/07/2016 14:15, Stefan Hajnoczi wrote:
> On Fri, Jul 15, 2016 at 10:46:54AM +0100, Stefan Hajnoczi wrote:
>> Renames look like this with git-diff(1) when diff.renames = true is set:
>>
>>   diff --git a/a b/b
>>   similarity index 100%
>>   rename from a
>>   rename to b
>>
>> This raises the "Does not appear to be a unified-diff format patch"
>> error because checkpatch.pl only considers a diff valid if it contains
>> at least one "@@" hunk.
>>
>> This patch accepts renames and copies too so that checkpatch.pl exits
>> successfully when a diff only renames/copies files.  The git diff
>> extended header format is described on the git-diff(1) man page.
>>
>> Reported-by: Colin Lord <clord@redhat.com>
>> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
>> ---
>>  scripts/checkpatch.pl | 5 +++++
>>  1 file changed, 5 insertions(+)
> 
> There is no maintainer for checkpatch.pl, so...
> 
> Thanks, applied to my block tree:
> https://github.com/stefanha/qemu/commits/block

Actually I've sent a pull request for this patch too this morning
(forgot to sent the "applied" message because at the time I applied it I
was offline), but Peter bumped it.

Paolo
diff mbox

Patch

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index cf32c8f..afa7f79 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -1279,6 +1279,11 @@  sub process {
 			}
 		}
 
+# Accept git diff extended headers as valid patches
+		if ($line =~ /^(?:rename|copy) (?:from|to) [\w\/\.\-]+\s*$/) {
+			$is_patch = 1;
+		}
+
 #check the patch for a signoff:
 		if ($line =~ /^\s*signed-off-by:/i) {
 			# This is a signoff, if ugly, so do not double report.