6 # Even with git, we don't always have name translations.
7 # So have an email->real name table to translate the
8 # (hopefully few) missing names
11 'R.Marek@sh.cvut.cz' => 'Rudolf Marek',
12 'Ralf.Wildenhues@gmx.de' => 'Ralf Wildenhues',
13 'aherrman@de.ibm.com' => 'Andreas Herrmann',
14 'akpm@osdl.org' => 'Andrew Morton',
15 'andrew.vasquez@qlogic.com' => 'Andrew Vasquez',
16 'aquynh@gmail.com' => 'Nguyen Anh Quynh',
17 'axboe@suse.de' => 'Jens Axboe',
18 'blaisorblade@yahoo.it' => 'Paolo \'Blaisorblade\' Giarrusso',
19 'bunk@stusta.de' => 'Adrian Bunk',
20 'domen@coderock.org' => 'Domen Puncer',
21 'dougg@torque.net' => 'Douglas Gilbert',
22 'dwmw2@shinybook.infradead.org' => 'David Woodhouse',
23 'ecashin@coraid.com' => 'Ed L Cashin',
24 'felix@derklecks.de' => 'Felix Moeller',
25 'fzago@systemfabricworks.com' => 'Frank Zago',
26 'gregkh@suse.de' => 'Greg Kroah-Hartman',
27 'hch@lst.de' => 'Christoph Hellwig',
28 'htejun@gmail.com' => 'Tejun Heo',
29 'jejb@mulgrave.(none)' => 'James Bottomley',
30 'jejb@titanic.il.steeleye.com' => 'James Bottomley',
31 'jgarzik@pretzel.yyz.us' => 'Jeff Garzik',
32 'johnpol@2ka.mipt.ru' => 'Evgeniy Polyakov',
33 'kay.sievers@vrfy.org' => 'Kay Sievers',
34 'minyard@acm.org' => 'Corey Minyard',
35 'mshah@teja.com' => 'Mitesh shah',
36 'pj@ludd.ltu.se' => 'Peter A Jonsson',
37 'rmps@joel.ist.utl.pt' => 'Rui Saraiva',
38 'santtu.hyrkko@gmail.com' => 'Santtu Hyrkkö',
39 'simon@thekelleys.org.uk' => 'Simon Kelley',
40 'ssant@in.ibm.com' => 'Sachin P Sant',
41 'terra@gnome.org' => 'Morten Welinder',
42 'tony.luck@intel.com' => 'Tony Luck',
43 'welinder@anemone.rentec.com' => 'Morten Welinder',
44 'welinder@darter.rentec.com' => 'Morten Welinder',
45 'welinder@troll.com' => 'Morten Welinder',
54 sub shortlog_entry
($$) {
55 my ($name, $desc) = @_;
58 $desc =~ s
#/pub/scm/linux/kernel/git/#/.../#g;
59 $desc =~ s
#\[PATCH\] ##g;
61 # store description in array, in email->{desc list} map
62 if (exists $map{$key}) {
69 # create new array, containing 1 item
77 # sort comparison function
85 my ($obj, $key, $desc);
87 foreach $key (sort by_name
keys %map) {
91 # output author's 1-line summaries
93 foreach $desc (reverse @
$obj) {
98 # blank line separating author from next author
103 sub changelog_input
{
107 # get author and email
111 next unless /^[Aa]uthor:? (.*)<(.*)>.*$/;
119 # trim trailing whitespace.
120 # why doesn't chomp work?
121 while ($author && ($author =~ /\s$/)) {
126 if (exists $mailmap{$email}) {
127 $author = $mailmap{$email};
128 } elsif (exists $mailmap{$author}) {
129 $author = $mailmap{$author};
130 } elsif ((!$author) || ($author eq "")) {
138 elsif ($pstate == 2) {
143 # skip to non-blank line
144 elsif ($pstate == 3) {
145 next unless /^\s*(\S.*)$/;
147 # skip lines that are obviously not
148 # a 1-line cset description
149 next if /^\s*From: /;
154 &shortlog_entry
($author, $desc);
160 die "invalid parse state $pstate";
166 #print "\n$n_records records parsed.\n";
168 if ($n_records != $n_output) {
169 die "parse error: input records != output records\n";