%logmsgs = (); %fileversions = ();
$skipme = 0;
@cvsdirs=`find . -type d -name CVS -print`;
map { chomp; s,^\./,, } @cvsdirs;
foreach $d (@cvsdirs) {
if (open ENTRIES, "$d/Entries") {
local ($rootdir) = $d;
$rootdir =~ s/CVS$//;
while (<ENTRIES>) {
local ($type, $file, $version, @junk) = split /\//;
if ($type eq "") {
$file = "$rootdir$file";
$fileversions{$file} = $version;
}
}
close ENTRIES;
}
}
sub compare_versions
{
my ($vw, $vl) = @_;
if ($vw eq "") {
return 2;
}
my (@vvw) = split /\./, $vw;
my (@vvl) = split /\./, $vl;
if ($ return 0;
}
my ($i);
for ($i = 0; $i < $ my ($bl) = $vvl[$i];
my ($vl) = $vvl[$i + 1];
my ($bw) = $vvw[$i];
my ($vw) = $vvw[$i + 1];
if ($bw != $bl || $vw < $vl) {
return 0;
}
}
return 1;
}
while (<>) {
if (/^Working file: /) {
chomp;
($ignore, $ignore, $currentfile) = split;
while (<>) {
if (/^----------------------------$/) {
last;
}
}
next;
} elsif (/^----------------------------$/) {
next;
} elsif (/^revision /) {
($ignore, $revision) = split;
my ($check) =&compare_versions($fileversions{$currentfile}, $revision);
if (($check == 2 && !($currentfile =~ /\//) &&
($currentfile =~ /\.[chly]$/)) ||
$check == 1) {
$skipme = 0;
} else {
$skipme = 1;
}
} elsif (/^date: /) {
($ignore, $date, $time, $ignore, $author, $ignore, $ignore,
$ignore, $plus, $minus, $ignore) = split;
$time =~ s/:[0-9][0-9];$//;
$author =~ s/;$//;
$datetimeauthor = "$date $time $author";
$body = "";
$firstline = 1;
while (<>) {
if (/^----------------------------$/) {
last;
} elsif (/^=============================================================================$/) {
last;
} elsif ($firstline && /^branches:[ \t]+[0-9]+(\.[0-9]+)+;$/) {
next;
} else {
$body .= $_;
$firstline = 0;
}
}
if ($skipme == 0) {
if ($logmsgs{$datetimeauthor}) {
$stuff = $logmsgs{$datetimeauthor};
$stuff =~ s/\n\n/\n\t$currentfile ($revision) ($plus $minus)\n\n/;
$logmsgs{$datetimeauthor} = $stuff;
} else {
$logmsgs{$datetimeauthor} = "Files:\t$currentfile ($revision) ($plus $minus)\n\n$body"
}
}
} }
@chlog = reverse sort keys %logmsgs;
foreach $_ (@chlog) {
($date, $time, $author) = split;
$date =~ s,/,-,g;
$msg = $logmsgs{$_};
print "$date\t<$author\@sourceforge.net>\n\n";
$msg =~ s/^/\t/g;
$msg =~ s/\n/\n\t/g;
$msg =~ s/[ \t]+\n/\n/g;
$msg =~ s/[ \t]+$//g;
print "$msg\n";
}