Difference between revisions of "Svn-results.pl"

From Organic Design wiki
(New page: #!/usr/bin/perl # Generate report of n...)
 
(better date handling)
Line 2: Line 2:
 
# Generate report of number of SVN committers by month
 
# Generate report of number of SVN committers by month
 
#{{perl}}
 
#{{perl}}
 +
use Date::Format;
 
use Date::Parse;
 
use Date::Parse;
  
Line 11: Line 12:
 
($revision,$date,$user,$core) = split ',';
 
($revision,$date,$user,$core) = split ',';
 
if ($date =~ /... (...) .. ..:..:.. (....)/ && $user) {
 
if ($date =~ /... (...) .. ..:..:.. (....)/ && $user) {
@m = strptime("$1 $2");
+
$data{time2str('%Y/%m',str2time("1 $1 $2"))}{$user}{0+$core}++;
$m = $m[4]+1;
+
$data{time2str('%Y',str2time("1 $1 $2"))}{$user}{0+$core}++;
if ($m < 10) { $m = "0$m" }
 
$data{"$2/$m"}{$user}{0+$core}++  
 
 
}
 
}
 
}
 
}
Line 35: Line 34:
 
$t += $c + $data{$date}{$_}{0};
 
$t += $c + $data{$date}{$_}{0};
 
}
 
}
+
if ($date =~ /^....$/) {
print "$date (users: $n,$ncore) (commits: $t,$tcore)\n";
+
print "\n|-\n|'''$date'''||'''$n'''||'''$ncore'''||'''$t'''||'''$tcore'''\n";
 +
}
 +
else {
 +
$date = time2str('%B',str2time("$date/01"));
 +
print "|-\n|$date||$n||$ncore||$t||$tcore\n";
 +
}
 
}
 
}

Revision as of 21:55, 16 May 2008

  1. !/usr/bin/perl
  2. Generate report of number of SVN committers by month
  3. Our Perl scripts.

use Date::Format; use Date::Parse;

$csv = '/var/www/svn-report.txt'; %data = ();

open CSV,'<',$csv; while (<CSV>) { ($revision,$date,$user,$core) = split ','; if ($date =~ /... (...) .. ..:..:.. (....)/ && $user) { $data{time2str('%Y/%m',str2time("1 $1 $2"))}{$user}{0+$core}++; $data{time2str('%Y',str2time("1 $1 $2"))}{$user}{0+$core}++; } } close CSV;

print "$revision revisions read into hash\n";

for $date (sort { $a cmp $b } keys %data) {

@users = keys %{ $data{$date} }; $n = 1+$#users; $ncore = 0; $t = 0; $tcore = 0; for (@users) { if ($c = $data{$date}{$_}{1}) { $ncore++; $tcore += $c; } $t += $c + $data{$date}{$_}{0}; } if ($date =~ /^....$/) { print "\n|-\n|$date||$n||$ncore||$t||$tcore\n"; } else { $date = time2str('%B',str2time("$date/01")); print "|-\n|$date||$n||$ncore||$t||$tcore\n"; } }