Skip to content

Commit

Permalink
contrib: contacts: add mailmap support
Browse files Browse the repository at this point in the history
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 <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Eric Sunshine authored and Junio C Hamano committed Jul 21, 2013
1 parent ccf6b45 commit 7c6d6ff
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions contrib/contacts/git-contacts
Original file line number Diff line number Diff line change
Expand Up @@ -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";
}
Expand Down Expand Up @@ -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) {
Expand Down

0 comments on commit 7c6d6ff

Please sign in to comment.