Personal tools

Svn-results.pl

From OrganicDesign Wiki

Jump to: navigation, search
#!/usr/bin/perl
# Generate report of number of SVN committers by month
#
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";
	}
}

The GNU Project Debian Linux Ubuntu Linux Wikipedia online encycopedia MediaWiki