qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PULL 05/35] checkpatch: improve handling of multiple patches or files
Date: Tue, 18 Dec 2018 00:16:30 +0100	[thread overview]
Message-ID: <20181217231700.24482-6-pbonzini@redhat.com> (raw)
In-Reply-To: <20181217231700.24482-1-pbonzini@redhat.com>

Similar to how patchew output looks like for multiple patches,
say what file or patch is being tested _before_ emitting errors.
This is clearer to a human that scans the output from top to
bottom.

In addition, provide a truncated commit hash and subject instead of
the full hash, and process the commits first-to-last rather than
last-to-first.

Inspired by Linux commit 0dea9f1eef86bedacad91b6f652ca1ab0d08854c
("checkpatch: reduce number of `git log` calls with --git", 2016-03-20).

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 scripts/checkpatch.pl | 30 +++++++++++++++++++++++-------
 1 file changed, 23 insertions(+), 7 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index d20bc58578..2184a481ac 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -339,13 +339,18 @@ my @lines = ();
 my $vname;
 if ($chk_branch) {
 	my @patches;
+	my %git_commits = ();
 	my $HASH;
-	open($HASH, "-|", "git", "log", "--format=%H", $ARGV[0]) ||
-		die "$P: git log --format=%H $ARGV[0] failed - $!\n";
-
-	while (<$HASH>) {
-		chomp;
-		push @patches, $_;
+	open($HASH, "-|", "git", "log", "--reverse", "--no-merges", "--format=%H %s", $ARGV[0]) ||
+		die "$P: git log --reverse --no-merges --format='%H %s' $ARGV[0] failed - $!\n";
+
+	for my $line (<$HASH>) {
+		$line =~ /^([0-9a-fA-F]{40,40}) (.*)$/;
+		next if (!defined($1) || !defined($2));
+		my $sha1 = $1;
+		my $subject = $2;
+		push(@patches, $sha1);
+		$git_commits{$sha1} = $subject;
 	}
 
 	close $HASH;
@@ -353,21 +358,31 @@ if ($chk_branch) {
 	die "$P: no revisions returned for revlist '$chk_branch'\n"
 	    unless @patches;
 
+	my $i = 1;
+	my $num_patches = @patches;
 	for my $hash (@patches) {
 		my $FILE;
 		open($FILE, '-|', "git", "show", $hash) ||
 			die "$P: git show $hash - $!\n";
-		$vname = $hash;
 		while (<$FILE>) {
 			chomp;
 			push(@rawlines, $_);
 		}
 		close($FILE);
+		$vname = substr($hash, 0, 12) . ' (' . $git_commits{$hash} . ')';
+		if ($num_patches > 1 && $quiet == 0) {
+			print "$i/$num_patches Checking commit $vname\n";
+			$vname = "Patch $i/$num_patches";
+		} else {
+			$vname = "Commit " . $vname;
+		}
 		if (!process($hash)) {
 			$exit = 1;
+			print "\n" if ($num_patches > 1 && $quiet == 0);
 		}
 		@rawlines = ();
 		@lines = ();
+		$i++;
 	}
 } else {
 	for my $filename (@ARGV) {
@@ -386,6 +401,7 @@ if ($chk_branch) {
 		} else {
 			$vname = $filename;
 		}
+		print "Checking $filename...\n" if @ARGV > 1 && $quiet == 0;
 		while (<$FILE>) {
 			chomp;
 			push(@rawlines, $_);
-- 
2.20.1

  parent reply	other threads:[~2018-12-17 23:17 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-17 23:16 [Qemu-devel] [PULL 00/35] Misc patches for 2018-12-18 Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 01/35] accel: Improve selection of the default accelerator Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 02/35] vhost-user-bridge: fix "unknown type name" compilation error Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 03/35] checkpatch: fix premature exit when no input or --mailback Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 04/35] checkpatch: check Signed-off-by in --mailback mode Paolo Bonzini
2018-12-17 23:16 ` Paolo Bonzini [this message]
2018-12-17 23:16 ` [Qemu-devel] [PULL 06/35] checkpatch: colorize output to terminal Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 07/35] pam: wrap MemoryRegion initialization in a transaction Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 08/35] memory: extract flat_range_coalesced_io_{del, add} Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 09/35] memory: avoid unnecessary coalesced_io_del operations Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 10/35] memory: update coalesced_range on transaction_commit Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 11/35] hax: Support for Linux hosts Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 12/35] block/iscsi: drop unused IscsiAIOCB->buf field Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 13/35] block/iscsi: take iscsilun->mutex in iscsi_timed_check_events() Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 14/35] block/iscsi: fix ioctl cancel use-after-free Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 15/35] block/iscsi: cancel libiscsi task when ABORT TASK TMF completes Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 16/35] esp-pci: Fix status register write erase control Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 17/35] scsi: esp: Defer command completion until previous interrupts have been handled Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 18/35] build-sys: don't include windows.h, osdep.h does it Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 19/35] build-sys: move windows defines in osdep.h header Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 20/35] build-sys: build with Vista API by default Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 21/35] qga: drop < Vista compatibility Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 22/35] test: execute g_test_run when tests are skipped Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 23/35] test: replace gtester with a TAP driver Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 24/35] qemu/queue.h: do not access tqe_prev directly Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 25/35] vfio: make vfio_address_spaces static Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 26/35] qemu/queue.h: leave head structs anonymous unless necessary Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 27/35] qemu/queue.h: typedef QTAILQ heads Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 28/35] qemu/queue.h: remove Q_TAILQ_{HEAD, ENTRY} Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 29/35] qemu/queue.h: reimplement QTAILQ without pointer-to-pointers Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 30/35] qemu/queue.h: simplify reverse access to QTAILQ Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 31/35] checkpatch: warn about qemu/queue.h head structs that are not typedef-ed Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 32/35] hw/watchdog/wdt_i6300esb: remove a unnecessary comment Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 33/35] scripts: add script to convert multiline comments into 4-line format Paolo Bonzini
2018-12-17 23:16 ` [Qemu-devel] [PULL 34/35] remove space-tab sequences Paolo Bonzini
2018-12-17 23:17 ` [Qemu-devel] [PULL 35/35] avoid TABs in files that only contain a few Paolo Bonzini
2018-12-19 14:33 ` [Qemu-devel] [PULL 00/35] Misc patches for 2018-12-18 Peter Maydell
2018-12-19 15:05   ` Paolo Bonzini
  -- strict thread matches above, loose matches on Subject: below --
2018-12-19 15:18 [Qemu-devel] [PULL v2 " Paolo Bonzini
2018-12-19 15:18 ` [Qemu-devel] [PULL 05/35] checkpatch: improve handling of multiple patches or files Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181217231700.24482-6-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).