From: Eric Sunshine Date: Sun, 21 Jul 2013 10:52:41 +0000 (-0400) Subject: contrib: contacts: add mailmap support X-Git-Tag: v1.8.4-rc0~3^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7c6d6ff8f122b10d6214c4f53e3179996dee2f9a;p=thirdparty%2Fgit.git 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 --- 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) {