2 # Process `cvs log' output to get a resonable changelog
3 # (c) 2003--2004 Martin Mares <mj@ucw.cz>
9 'mj' => 'Martin Mares <mj@ucw.cz>',
10 'robert' => 'Robert Spalek <robert@ucw.cz>',
11 'tom' => 'Tomas Valla <tom@ucw.cz>',
12 'valla' => 'Tomas Valla <tom@ucw.cz>',
13 'milan' => 'Milan Vancura <milan@ucw.cz>',
14 'milanek' => 'Milan Vancura <milan@ucw.cz>',
15 'tomhol' => 'Tomas Holusa <tomas.holusa@netcentrum.cz>',
16 'centrum' => 'Tomas Holusa <tomas.holusa@netcentrum.cz>',
17 'root' => 'Tomas Holusa <tomas.holusa@netcentrum.cz>',
18 'pavel' => 'Pavel Machek <pavel@ucw.cz>',
19 'th2' => 'Tomas Holenda <tomas.holenda@netcentrum.cz>',
20 'croniak' => 'Vladimir Jelen <vladimir.jelen@netcentrum.cz>',
30 my ($file) = /^Working file: (.*)$/ or die;
34 } while (!/^description:/);
38 if (/^------/) { $_ = <STDIN>; next; }
41 my ($author) = /;\s*author:\s*([^;]+)/ or die;
42 my ($yy,$mm,$dd,$HH,$MM,$SS) = /^date: (....)\/(..)\/(..) (..):(..):(..);/ or die;
43 my $t = POSIX::mktime($SS,$MM,$HH,$dd,$mm-1,$yy-1900) or die;
44 my $T = sprintf("%06d", int(($t + 1800)/3600));
46 while ($_ = <STDIN>) {
47 /^(-----|=====)/ && last;
50 my $id = "$T:" . Digest::MD5::md5_hex($d);
51 if (!defined $msg{$id}) {
52 $date{$id} = "$yy-$mm-$dd $HH:$MM:$SS";
55 $author{$id} = $author;
57 $files{$id} .= " * $file\n";
62 foreach $id (sort keys %date) {
63 if (!exists ($names{$author{$id}})) {
64 print STDERR "Unknown commiter $author{$id}\n";
65 $names{$author{$id}} = "unknown $author{$id}";
67 print "### ", $date{$id}, " ", $names{$author{$id}}, "\n\n";
68 print $files{$id}, "\n";
69 print $msg{$id}, "\n";