f25ce46b89
This will soon need to be converted to git, but it is a good starting point, anyway. This commit was SVN r32291.
115 строки
3.0 KiB
Perl
Исполняемый файл
115 строки
3.0 KiB
Perl
Исполняемый файл
#!/usr/bin/env perl
|
|
|
|
use strict;
|
|
|
|
use Data::Dumper;
|
|
|
|
##########################################################################
|
|
|
|
# Read in the AUTHORS file
|
|
|
|
die "Run this script at the top of an OMPI SVN tree"
|
|
if (! -r "AUTHORS");
|
|
|
|
print "Reading AUTHORS file...\n";
|
|
open(AUTHORS, "AUTHORS") || die "Can't open AUTHORS file";
|
|
my $in = 0;
|
|
my $authors;
|
|
my $count = 0;
|
|
while (<AUTHORS>) {
|
|
chomp;
|
|
|
|
if ($in) {
|
|
if (length($_) == 0) {
|
|
$in = 0;
|
|
next;
|
|
}
|
|
|
|
# There's probably a good regexp that will sort this better,
|
|
# but I'm a little too lazy at the moment. :-( So just use
|
|
# fixed widths for the name and affiliation fields, and then
|
|
# strip off trailing whitespace.
|
|
m/(\S+)\s+/;
|
|
my $username = $1;
|
|
my $name = substr($_, 14, 27);
|
|
my $affiliation = substr($_, 42);
|
|
$name =~ s/(\s+)$//;
|
|
$affiliation =~ s/(\s+)$//;
|
|
|
|
$authors->{$username} = {
|
|
username => $username,
|
|
name => $name,
|
|
affiliation => $affiliation,
|
|
active => 0,
|
|
};
|
|
++$count;
|
|
}
|
|
|
|
else {
|
|
$in = 1
|
|
if (/^------.+ .+ .+-----$/);
|
|
}
|
|
}
|
|
close(AUTHORS);
|
|
print "Read $count authors from AUTHORS file\n";
|
|
|
|
##########################################################################
|
|
|
|
# Read committers from SVN log over the past year
|
|
|
|
my $trunk = "https://svn.open-mpi.org/svn/ompi/trunk";
|
|
|
|
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
|
|
localtime(time);
|
|
|
|
$year += 1900;
|
|
my $today = sprintf("%04d-%02d-%02d", $year, $mon+1, $mday);
|
|
my $year_ago = sprintf("%04d-%02d-%02d", $year-1, $mon+1, $mday);
|
|
|
|
$count = 0;
|
|
my $committers;
|
|
print "Reading SVN log to find committers over past year...\n";
|
|
open(SVN, "svn log -v -r '{$today}:{$year_ago}' $trunk|") ||
|
|
die "Can't open svn log";
|
|
while (<SVN>) {
|
|
if (m/^(r\d+) \| (\S+) \| (\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)/) {
|
|
print "Indexed $1 ($3)\n";
|
|
|
|
if (!exists($committers->{$2})) {
|
|
$committers->{$2} = 1;
|
|
++$count;
|
|
}
|
|
|
|
if (!exists($authors->{$2})) {
|
|
print "WARNING: committer $2 is not in AUTHORS!\n";
|
|
} else {
|
|
$authors->{$2}->{active} = 1;
|
|
}
|
|
}
|
|
}
|
|
close(SVN);
|
|
print "Found $count SVN committers over the last year\n";
|
|
|
|
##########################################################################
|
|
|
|
# Print list of committers over the past year
|
|
|
|
print "
|
|
AUTHORS with commits in the past year:
|
|
--------------------------------------\n";
|
|
foreach my $username (sort(keys(%{$authors}))) {
|
|
if ($authors->{$username}->{active}) {
|
|
print "$username -> $authors->{$username}->{name}, $authors->{$username}->{affiliation}\n";
|
|
}
|
|
}
|
|
|
|
print "
|
|
AUTHORS with NO commits in the past year:
|
|
-----------------------------------------\n";
|
|
foreach my $username (sort(keys(%{$authors}))) {
|
|
if (!$authors->{$username}->{active}) {
|
|
print "$username -> $authors->{$username}->{name}, $authors->{$username}->{affiliation}\n";
|
|
}
|
|
}
|
|
|