12 sub shortlog_entry
($$) {
13 my ($name, $desc) = @_;
16 $desc =~ s
#/pub/scm/linux/kernel/git/#/.../#g;
17 $desc =~ s
#\[PATCH\] ##g;
19 # store description in array, in email->{desc list} map
20 if (exists $map{$key}) {
27 # create new array, containing 1 item
35 # sort comparison function
43 my ($obj, $key, $desc);
45 foreach $key (sort by_name
keys %map) {
49 # output author's 1-line summaries
51 foreach $desc (reverse @
$obj) {
56 # blank line separating author from next author
65 # get author and email
69 next unless /^[Aa]uthor:?\s*(.*?)\s*<(.*)>/;
78 if (exists $mailmap{$email}) {
79 $author = $mailmap{$email};
80 } elsif (exists $mailmap{$author}) {
81 $author = $mailmap{$author};
85 $email{$author}{$email}++;
90 elsif ($pstate == 2) {
95 # skip to non-blank line
96 elsif ($pstate == 3) {
97 next unless /^\s*?(.*)/;
99 # skip lines that are obviously not
100 # a 1-line cset description
101 next if /^\s*From: /;
106 &shortlog_entry
($author, $desc);
112 die "invalid parse state $pstate";
118 my ($fh, $mailmap) = @_;
121 if (/^([^#].*?)\s*<(.*)>/) {
128 read_mailmap
(\
*DATA
, \
%mailmap);
131 open $fh, '<', '.mailmap';
132 read_mailmap
($fh, \
%mailmap);
138 #print "\n$n_records records parsed.\n";
140 if ($n_records != $n_output) {
141 die "parse error: input records != output records\n";
144 for my $author (sort keys %email) {
145 my $e = $email{$author};
146 for my $email (sort keys %$e) {
147 print STDERR
"$author <$email>\n";
162 # Even with git, we don't always have name translations.
163 # So have an email->real name table to translate the
164 # (hopefully few) missing names
166 Adrian Bunk
<bunk
@stusta.de
>
167 Andreas Herrmann
<aherrman
@de.ibm
.com
>
168 Andrew Morton
<akpm
@osdl.org
>
169 Andrew Vasquez
<andrew
.vasquez
@qlogic.com
>
170 Christoph Hellwig
<hch
@lst.de
>
171 Corey Minyard
<minyard
@acm.org
>
172 David Woodhouse
<dwmw2
@shinybook.infradead
.org
>
173 Domen Puncer
<domen
@coderock.org
>
174 Douglas Gilbert
<dougg
@torque.net
>
175 Ed L Cashin
<ecashin
@coraid.com
>
176 Evgeniy Polyakov
<johnpol
@2ka.mipt
.ru
>
177 Felix Moeller
<felix
@derklecks.de
>
178 Frank Zago
<fzago
@systemfabricworks.com
>
179 Greg Kroah
-Hartman
<gregkh
@suse.de
>
180 James Bottomley
<jejb
@mulgrave.(none
)>
181 James Bottomley
<jejb
@titanic.il
.steeleye
.com
>
182 Jeff Garzik
<jgarzik
@pretzel.yyz
.us
>
183 Jens Axboe
<axboe
@suse.de
>
184 Kay Sievers
<kay
.sievers
@vrfy.org
>
185 Mitesh shah
<mshah
@teja.com
>
186 Morten Welinder
<terra
@gnome.org
>
187 Morten Welinder
<welinder
@anemone.rentec
.com
>
188 Morten Welinder
<welinder
@darter.rentec
.com
>
189 Morten Welinder
<welinder
@troll.com
>
190 Nguyen Anh Quynh
<aquynh
@gmail.com
>
191 Paolo
'Blaisorblade' Giarrusso
<blaisorblade
@yahoo.it
>
192 Peter A Jonsson
<pj
@ludd.ltu
.se
>
193 Ralf Wildenhues
<Ralf
.Wildenhues
@gmx.de
>
194 Rudolf Marek
<R
.Marek
@sh.cvut
.cz
>
195 Rui Saraiva
<rmps
@joel.ist
.utl
.pt
>
196 Sachin P Sant
<ssant
@in.ibm
.com
>
197 Santtu Hyrkk
\e,Av
\e(B
<santtu
.hyrkko
@gmail.com
>
198 Simon Kelley
<simon
@thekelleys.org
.uk
>
199 Tejun Heo
<htejun
@gmail.com
>
200 Tony Luck
<tony
.luck
@intel.com
>