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>