Annotation of embedaddon/bird/tools/cvslog, revision 1.1.1.1
1.1 misho 1: #!/usr/bin/perl
2: # Process `cvs log' output to get a resonable changelog
3: # (c) 2003--2004 Martin Mares <mj@ucw.cz>
4:
5: use Digest::MD5;
6: use POSIX;
7:
8: my %names= (
9: 'mj' => 'Martin Mares <mj@ucw.cz>',
10: 'feela' => 'Ondrej Filip <feela@network.cz>',
11: 'pavel' => 'Pavel Machek <pavel@ucw.cz>'
12: );
13:
14: while (<STDIN>) {
15: chomp;
16: /^$/ && next;
17: /^[?]/ && next;
18: /^RCS file: / || die;
19: $_ = <STDIN>;
20: chomp;
21: my ($file) = /^Working file: (.*)$/ or die;
22: #print "$file\n";
23: do {
24: $_ = <STDIN> or die;
25: } while (!/^description:/);
26: $_ = <STDIN>;
27: for(;;) {
28: /^======/ && last;
29: if (/^------/) { $_ = <STDIN>; next; }
30: /^revision / || die;
31: $_ = <STDIN>;
32: my ($author) = /;\s*author:\s*([^;]+)/ or die;
33: my ($yy,$mm,$dd,$HH,$MM,$SS) = /^date: (....)\/(..)\/(..) (..):(..):(..);/ or die;
34: my $t = POSIX::mktime($SS,$MM,$HH,$dd,$mm-1,$yy-1900) or die;
35: my $T = sprintf("%06d", int(($t + 1800)/3600));
36: $d = "";
37: while ($_ = <STDIN>) {
38: /^(-----|=====)/ && last;
39: $d .= " $_";
40: }
41: my $id = "$T:" . Digest::MD5::md5_hex($d);
42: if (!defined $msg{$id}) {
43: $date{$id} = "$yy-$mm-$dd $HH:$MM:$SS";
44: $msg{$id} = $d;
45: $files{$id} = "";
46: $author{$id} = $author;
47: }
48: $files{$id} .= " * $file\n";
49: #print "\t$id\n";
50: }
51: }
52:
53: foreach $id (sort keys %date) {
54: if (!exists ($names{$author{$id}})) {
55: die "Unknown commiter $author{$id}";
56: }
57: print "### ", $date{$id}, " ", $names{$author{$id}}, "\n\n";
58: print $files{$id}, "\n";
59: print $msg{$id}, "\n";
60: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>