[PATCH/RFC 2/4] contrib: contacts: add support for multiple patches
Accept multiple patch files rather than only one. For example:
% git contacts feature/*.patch
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
---
contrib/contacts/git-contacts | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/contrib/contacts/git-contacts b/contrib/contacts/git-contacts
index 9007bae..ab11670 100755
--- a/contrib/contacts/git-contacts
+++ b/contrib/contacts/git-contacts
@@ -3,7 +3,7 @@
# List people who might be interested in a patch. Useful as the argument to
# git-send-email --cc-cmd option, and in other situations.
#
-# Usage: git contacts <file>
+# Usage: git contacts <file> ...
use strict;
use warnings;
@@ -13,6 +13,7 @@ my $since = '5-years-ago';
my $min_percent = 10;
my $labels_rx = qr/(?:Signed-off|Reviewed|Acked)-by/;
my $id_rx = qr/[0-9a-f]{40}/i;
+my %seen;
sub format_contact {
my ($name, $email) = @_;
@@ -68,7 +69,9 @@ sub get_blame {
while (<$f>) {
if (/^$id_rx/o) {
my $id = $&;
- $commits->{$id} = { id => $id, contacts => {} };
+ $commits->{$id} = { id => $id, contacts => {} }
+ unless $seen{$id};
+ $seen{$id} = 1;
}
}
close $f;
@@ -93,6 +96,7 @@ sub commits_from_patch {
while (<$f>) {
if (/^From ($id_rx) /o) {
$id = $1;
+ $seen{$id} = 1;
last;
}
}
@@ -100,10 +104,8 @@ sub commits_from_patch {
close $f;
}
-exit 1 unless @ARGV == 1;
-
my %commits;
-commits_from_patch(\%commits, $ARGV[0]);
+commits_from_patch(\%commits, $_) for (@ARGV);
import_commits(\%commits);
my %count_per_person;
--
1.8.3.2