Annotation of embedaddon/bird2/tools/cvslog, revision 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>