From 7c6d6ff8f122b10d6214c4f53e3179996dee2f9a Mon Sep 17 00:00:00 2001 From: Eric Sunshine Date: Sun, 21 Jul 2013 06:52:41 -0400 Subject: contrib: contacts: add mailmap support The purpose of git-contacts is to determine a list of people who might have some interest in a patch or set of changes. It can be used as git-send-email's --cc-cmd argument or the computed list might be used to ask for comments on a proposed change. As such, it is important to report up-to-date email addresses in the computed list rather than potentially outdated ones recorded with commits. Apply git's mailmap functionality to the retrieved contacts in order to achieve this goal. Signed-off-by: Eric Sunshine Signed-off-by: Junio C Hamano --- contrib/contacts/git-contacts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'contrib') diff --git a/contrib/contacts/git-contacts b/contrib/contacts/git-contacts index 4553add0a6..d80f7d1b6e 100755 --- a/contrib/contacts/git-contacts +++ b/contrib/contacts/git-contacts @@ -133,6 +133,23 @@ sub scan_rev_args { close $f; } +sub mailmap_contacts { + my ($contacts) = @_; + my %mapped; + my $pid = open2 my $reader, my $writer, qw(git check-mailmap --stdin); + for my $contact (keys(%$contacts)) { + print $writer "$contact\n"; + my $canonical = <$reader>; + chomp $canonical; + $mapped{$canonical} += $contacts->{$contact}; + } + close $reader; + close $writer; + waitpid($pid, 0); + die "git-check-mailmap error: $?\n" if $?; + return \%mapped; +} + if (!@ARGV) { die "No input revisions or patch files\n"; } @@ -161,6 +178,7 @@ for my $commit (values %commits) { $contacts->{$contact}++; } } +$contacts = mailmap_contacts($contacts); my $ncommits = scalar(keys %commits); for my $contact (keys %$contacts) { -- cgit v1.2.3