Personal tools


Svn-report.pl

From OrganicDesign

Jump to: navigation, search
#!/usr/bin/perl
# Read meta data from an SVN repository into a file
# 
 
$url = 'http://svn.wikimedia.org/viewvc/mediawiki';
 
# Todo: Make files name determined by url
$out = '/var/www/svn-report.txt';
 
# Set up a user agent
use HTTP::Request;
use LWP::UserAgent;
$client = LWP::UserAgent->new(
        cookie_jar => {},
        agent => 'Mozilla/5.0',
        from => 'svn-report.pl@organicdesign.co.nz',
        timeout => 10,
        max_size => 20000
        );
 
$found = true;
 
# Todo: Start at last processed revision in $out
$revision = 1;
 
while ($found) {
	$revision++;
	$response = $client->get("$url?view=rev&revision=$revision");
	$content = $response->content;
	if ($content =~ /<pre>404 Not Found<\/pre>/) {
		$found = false;
	}
	else {
		$core   = 0;
		$author = '';
		$date   = '';
		if ($content =~ /<strong>Changed paths:<\/strong>.+phase3/s)   { $core = 1    } # Todo: Extract all path info
		if ($content =~ /<th>Author:<\/th>\s*<td>(.*?)<\/td>/s)        { $author = $1 }
		if ($content =~ /<th>Date:<\/th>\s*<td>(.+?)\s+UTC.*?<\/td>/s) { $date = $1   }
 
		$line = "$revision,$date,$author,$core\n";
		print $line;
		open OUTH,'>>',$out or die "Can't open '$out' for writing!";
		print OUTH $line;
		close OUTH;
	}
}