#!/usr/bin/perl
# Process `cvs log' output to get a resonable changelog
-# (c) 2003 Martin Mares <mj@ucw.cz>
+# (c) 2003--2004 Martin Mares <mj@ucw.cz>
use Digest::MD5;
use POSIX;
+my %names= (
+ 'mj' => 'Martin Mares <mj@ucw.cz>',
+ 'robert' => 'Robert Spalek <robert@ucw.cz>',
+ 'tom' => 'Tomas Valla <tom@ucw.cz>',
+ 'valla' => 'Tomas Valla <tom@ucw.cz>',
+ 'milan' => 'Milan Vancura <milan@ucw.cz>',
+ 'milanek' => 'Milan Vancura <milan@ucw.cz>',
+ 'tomhol' => 'Tomas Holusa <tomas.holusa@netcentrum.cz>',
+ 'centrum' => 'Tomas Holusa <tomas.holusa@netcentrum.cz>',
+ 'root' => 'Tomas Holusa <tomas.holusa@netcentrum.cz>',
+ 'pavel' => 'Pavel Machek <pavel@ucw.cz>'
+);
+
while (<STDIN>) {
chomp;
/^$/ && next;
+ /^[?]/ && next;
/^RCS file: / || die;
$_ = <STDIN>;
chomp;
if (/^------/) { $_ = <STDIN>; next; }
/^revision / || die;
$_ = <STDIN>;
+ my ($author) = /;\s*author:\s*([^;]+)/ or die;
my ($yy,$mm,$dd,$HH,$MM,$SS) = /^date: (....)\/(..)\/(..) (..):(..):(..);/ or die;
my $t = POSIX::mktime($SS,$MM,$HH,$dd,$mm-1,$yy-1900) or die;
my $T = sprintf("%06d", int(($t + 1800)/3600));
$d = "";
while ($_ = <STDIN>) {
/^(-----|=====)/ && last;
- $d .= $_;
+ $d .= " $_";
}
my $id = "$T:" . Digest::MD5::md5_hex($d);
if (!defined $msg{$id}) {
$date{$id} = "$yy-$mm-$dd $HH:$MM:$SS";
$msg{$id} = $d;
$files{$id} = "";
+ $author{$id} = $author;
}
- $files{$id} .= "\t* $file\n";
+ $files{$id} .= " * $file\n";
#print "\t$id\n";
}
}
foreach $id (sort keys %date) {
- print "### ", $date{$id}, "\n\n";
+ if (!exists ($names{$author{$id}})) {
+ die "Unknown commiter $author{$id}";
+ }
+ print "### ", $date{$id}, " ", $names{$author{$id}}, "\n\n";
print $files{$id}, "\n";
print $msg{$id}, "\n";
}