From aa526f6a34933327bd78007cf05c4117d568bb36 Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Tue, 19 Dec 2000 23:36:25 +0000 Subject: tools to auto generate the ChangeLog and the mail to changelog --- tools/cvslog2changelog.pl | 67 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 tools/cvslog2changelog.pl (limited to 'tools/cvslog2changelog.pl') diff --git a/tools/cvslog2changelog.pl b/tools/cvslog2changelog.pl new file mode 100755 index 000000000..4b33fed45 --- /dev/null +++ b/tools/cvslog2changelog.pl @@ -0,0 +1,67 @@ +#!/usr/bin/perl + +while (<>) { + if ($e = /^description:/ .. /^={77}/) { + next if $e == 1 || $e =~ /E0/; + if (/^-{28}/ .. /^date: /) { + if (/^date: (\S+)\s.*author: (\S+);/) { + ($date, $user) = ($1, $2); + } + } elsif (!/^branches: / && !/file .* was initially added on branch/ && !/empty log message/ && !/no_comment/) { + $l{$date}{$user}{$file} .= $_; + } + } elsif (/Working file: (.*)/) { + $file = $1; + } +} + +foreach $date (reverse sort keys %l) { + foreach $user (sort keys %{$l{$date}}) { + $fuser = $users{$user} || $user; + print "$date $fuser\n\n"; + my %inv; + while (($file, $log) = each %{$l{$date}{$user}}) { + $log =~ s/^\s+( \*)?//ms; + $log =~ s/\s+$//ms; + push @{$inv{$log}}, $file; + } + foreach $log (keys %inv) { + $line = join(', ', @{$inv{$log}}) . ($log !~ /^\(/ && ':') . " $log"; + print "\t* ", join("\n\t", auto_fill($line, 72)), "\n\n"; + } + } +} + +1; + +sub auto_fill { + my ($line, $col) = @_; + map { + my @l; + my $l = ''; + while ($_) { + s/^(\s*)(\S*)//; + my $m = "$l$1$2"; + if (length $m > $col) { + push @l, $l; + $l = $2; + } else { + $l = $m + } + } + @l, $l; + } split("\n", $line); +} + +BEGIN { + %users = ( + 'gc' => 'Guillaume Cottenceau ', + 'fpons' => 'François Pons ', + 'pablo' => 'Pablo Saratxaga ', + 'damien' => 'dam\'s ', + 'install' => 'DrakX ', + 'prigaux' => 'Pixel ', + 'flepied' => 'Frederic Lepied ', + 'chmouel' => 'Chmouel Boudjnah ', + ); +} -- cgit v1.2.1