For this you can use this nice perl-script, which will print out the number of commits in the last 180 days. You can also provide the number of days as argument.
#! /usr/bin/perl -w
# config area: put the path to your repositories in here!
$RepoPath="/opt/svn/";
$SVNPath="file://$RepoPath";
# only 1 parameter is needed: the number of days we will look for the commits
$TimeLimit=@ARGV[0];
# if user dont provide a number of days, we will default to 180 days
if ($TimeLimit eq ""){
$TimeLimit=180;
}
# print out a help message, if someone gets lost..
if ($TimeLimit eq "-h" || $TimeLimit eq "--help" || $TimeLimit eq "-help"){
print "Output the number of commits which occured in the last X days\n";
print "repo_usage [days]\n";
print " days (optional, defaults to 180 days)\n will provide the number of days\n where commits will be count.\n";
exit;
}
#.......here starts the main program.......
# first we will calculate the current date and the requested date
# after this we will build a string with the appropriate svn command
# at last step we will loop through the given directory and apply
# our svn command for all repositories
$svncmd = "svn log -q -r{";
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year+=1900;
$mon+=1;
$svncmd .= "$year-$mon-$mday}:{";
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time-60 * 60 * 24 * $TimeLimit);
$year+=1900;
$mon+=1;
$svncmd .= "$year-$mon-$mday} $SVNPath";
# here we loop through all repositories
# as svn outputs the log messages with a separator line
# we need to divide by 2 and svn starts with an additional separatorline
# thats why we need to subtract 1 line also
# to get the number of commits.
opendir(DIR, $RepoPath);
foreach (sort(readdir (DIR))){
if ($_ ne "." && $_ ne ".." ){
$output = `$svncmd$_ | wc -l`;
$output = ($output-1)/2;
print $_." :".$output."\n";
}
}
No comments:
Post a Comment