read_authors_files($author_file);
-parse_commits_from_stdin();
if ($rank) {
+ parse_commits_from_stdin();
display_ordered(\%patchers);
} elsif ($ta) {
+ parse_commits_from_stdin();
display_ordered(\%committers);
} elsif ($tap) {
+ parse_commits_from_stdin_authors();
display_test_output(\%patchers, \%authors, \%real_names);
} elsif ($ack) {
+ parse_commits_from_stdin();
display_missing_authors(\%patchers, \%authors, \%real_names);
} elsif ($who) {
+ parse_commits_from_stdin();
list_authors(\%patchers, \%authors);
}
sub list_authors {
my ($patchers, $authors) = @_;
binmode(STDOUT, ":utf8");
- print "$_\n" for sort { lc $a cmp lc $b }
+ print wrap '', '', join(', ', sort { lc $a cmp lc $b }
map { $authors->{$_} }
- keys %$patchers;
+ keys %$patchers) . ".\n";
}
sub parse_commits_from_stdin {
}
+# just grab authors. Quicker than parse_commits_from_stdin
+
+sub parse_commits_from_stdin_authors {
+ while (<>) {
+ next unless /^Author:\s*(.*)$/;
+ my $author = $1;
+ $author = _raw_address($author);
+ $patchers{$author}++;
+ }
+}
+
sub generate_known_author_map {
my %map;
my $authors = shift;
my $real_names = shift;
my $count = 0;
+ printf "1..%d\n", scalar keys %$patchers;
foreach ( sort keys %$patchers ) {
- $count++;
-
+ $count++;
if ($authors->{$_}) {
print "ok $count - ".$real_names->{$_} ." $_\n";
} else {
}
}
- print "1..$count\n";
}
sub display_missing_authors {
+ root\100dubravka.in-berlin.de
anno4000\100lublin.zrz.tu-berlin.de anno4000\100mailbox.tu-berlin.de
+ siegel\100zrz.tu-berlin.de
+apocal@cpan.org perl\1000ne.us
arnold\100gnu.ai.mit.edu arnold\100emoryu2.arpa
+ gatech!skeeve!arnold
arodland\100cpan.org andrew\100hbslabs.com
BQW10602\100nifty.com sadahiro\100cpan.org
chromatic\100wgz.org chromatic\100rmci.net
+claes\100surfar.nu claes\100versed.se
clintp\100geeksalad.org cpierce1\100ford.com
clkao\100clkao.org clkao\100bestpractical.com
corion\100corion.net corion\100cpan.org
david\100kineticode.com david\100wheeler.com
+ david\100wheeler.net
dennis\100booking.com dennis\100camel.ams6.corp.booking.com
++ dennis\100kaarsemaker.net
dev-perl\100pimb.org knew-p5p\100pimb.org
+ lists-p5p\100pimb.org
djberg86\100attbi.com djberg96\100attbi.com
hio\100ymir.co.jp hio\100hio.jp
hops\100sco.com hops\100scoot.pdev.sco.com
+ian.goodacre\100xtra.co.nz ian\100debian.lan
ingo_weinhold\100gmx.de bonefish\100cs.tu-berlin.de
james\100mastros.biz theorb\100desert-island.me.uk
jbuehler\100hekimian.com jhpb\100hekimian.com
jcromie\100100divsol.com jcromie\100cpan.org
+ jim.cromie\100gmail.com
-jidanni\100jidanni.org jidanni\100hoffa.dreamhost.com
jdhedden\100cpan.org jerry\100hedden.us
+ jdhedden\1001979.usna.com
+ jdhedden\100gmail.com
jesse\100sig.bsh.com jesse\100ginger
jfriedl\100yahoo.com jfriedl\100yahoo-inc.com
jfs\100fluent.com jfs\100jfs.fluent.com
-jhannah\100omnihotels.com jay\100jays.net
+jhannah\100mutationgrid.com jay\100jays.net
++ jhannah\100omnihotels.com
+jidanni\100jidanni.org jidanni\100hoffa.dreamhost.com
jjore\100cpan.org twists\100gmail.com
jns\100integration-house.com jns\100gellyfish.com
+ gellyfish\100gellyfish.com
+ jpeacock\100havurah-software.org
+ jpeacock\100dsl092-147-156.wdc1.dsl.speakeasy.net
+ jpeacock\100jpeacock-hp.doesntexist.org
++ jpeacock\100cpan.org
jql\100accessone.com jql\100jql.accessone.com
jsm28\100hermes.cam.ac.uk jsm28\100cam.ac.uk
ken\100mathforum.org kenahoo\100gmail.com
+ ken.williams\100thomsonreuters.com
kroepke\100dolphin-services.de kay\100dolphin-services.de
+kst\100mib.org kst\100cts.com
++ kst\100SDSC.EDU
kstar\100wolfetech.com kstar\100cpan.org
+ kurt_starsinic\100ml.com
+ kstar\100www.chapin.edu
merijnb\100iloquent.nl merijnb\100ms.com
+ merijnb\100iloquent.com
merlyn\100stonehenge.com merlyn\100gadget.cscaper.com
+mestre.smash\100gmail.com smash\100cpan.org
mgjv\100comdyn.com.au mgjv\100tradingpost.com.au
mlh\100swl.msd.ray.com webtools\100uewrhp03.msd.ray.com
michael.schroeder\100informatik.uni-erlangen.de mls\100suse.de
+ rmb\100cise.npl.co.uk
+ robin\100spade-ubuntu.(none)
+ r.m.barker\100btinternet.com
++ rmbarker.cpan\100btinternet.com
robertmay\100cpan.org rob\100themayfamily.me.uk
roberto\100keltia.freenix.fr roberto\100eurocontrol.fr
robin\100cpan.org robin\100kitsite.com
+ tomphoenix\100unknown
rurban\100x-ray.at rurban\100cpan.org
+sartak\100bestpractical.com sartak\100gmail.com
+sadinoff\100olf.com danny-cpan\100sadinoff.com
schubiger\100cpan.org steven\100accognoscere.org
+ sts\100accognoscere.org
+ schubiger\100gmail.com
++ stsc\100refcnt.org
schwern\100pobox.com schwern\100gmail.com
+ schwern\100athens.arena-i.com
+ schwern\100blackrider.aocn.com
+ schwab\100ls5.informatik.uni-dortmund.de
sebastien\100aperghis.net maddingue\100free.fr
+ saper\100cpan.org
-shlomif\100vipe.technion.ac.il shlomif\100iglu.org.il
+shigeya\100wide.ad.jp shigeya\100foretune.co.jp
+shlomif\100cpan.org shlomif\100vipe.technion.ac.il
++ shlomif\100iglu.org.il
++ shlomif+processed-by-perl\100gmail.com
++ shlomif\100shlomifish.org
simon\100simon-cozens.org simon\100pembro4.pmb.ox.ac.uk
+ simon\100brecon.co.uk
+ simon\100othersideofthe.earth.li
+ spidb\100cpan.org
+ spider.boardman\100orb.nashua.nh.us
+ root\100peano.zk3.dec.com
+spiros\100lokku.com s.denaxas\100gmail.com
spp\100ds.net spp\100psa.pencom.com
+ spp\100psasolar.colltech.com
+ spp\100spotter.yi.org
+ properler\100freesurf.fr
+ stef\100francenet.fr
sthoenna\100efn.org ysth\100raven.shiftboard.com
+sisyphus1\100optusnet.com.au sisyphus\100cpan.org
tassilo.parseval\100post.rwth-aachen.de tassilo.von.parseval\100rwth-aachen.de
tchrist\100perl.com tchrist\100mox.perl.com
+ vadim\100vkonovalov.ru
+ vkonovalov\100spb.lucent.com
+ vkonovalov\100alcatel-lucent.com
++ vadim.konovalov\100alcatel-lucent.com
whatever\100davidnicol.com davidnicol\100gmail.com
wolfgang.laun\100alcatel.at wolfgang.laun\100chello.at
+ wolfgang.laun\100thalesgroup.com
+ wolfgang.laun\100gmail.com
yath\100yath.de yath-perlbug\100yath.de
+
+jkeen@verizon.net jkeenan@cpan.org