diff options
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/log2changes.pl | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/scripts/log2changes.pl b/scripts/log2changes.pl new file mode 100755 index 000000000..667daabf0 --- /dev/null +++ b/scripts/log2changes.pl @@ -0,0 +1,81 @@ +#!/usr/bin/perl + +# git log --pretty=fuller --no-color --date=short --decorate=full + +my @mname = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ); + +sub nicedate { + my ($date)=$_; + + if($date =~ /(\d\d\d\d)-(\d\d)-(\d\d)/) { + return sprintf("%d %s %4d", $3, $mname[$2-1], $1); + } + return $date; +} + +print +' _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + + Changelog +'; + +my $line; +my $tag; +while(<STDIN>) { + my $l = $_; + + if($l =~/^commit ([[:xdigit:]]*) ?(.*)/) { + $co = $1; + my $ref = $2; + if ($ref =~ /refs\/tags\/curl-([0-9_]*)/) { + $tag = $1; + $tag =~ tr/_/./; + } + } + elsif($l =~ /^Author: *(.*) +</) { + $a = $1; + } + elsif($l =~ /^Commit: *(.*) +</) { + $c = $1; + } + elsif($l =~ /^CommitDate: (.*)/) { + $date = nicedate($1); + } + elsif($l =~ /^( )(.*)/) { + my $extra; + if ($tag) { + # Version entries have a special format + print "\nVersion " . $tag." ($date)\n"; + $oldc = ""; + $tag = ""; + } + if($a ne $c) { + $extra=sprintf("\n- [%s brought this change]\n\n ", $a); + } + else { + $extra="\n- "; + } + if($co ne $oldco) { + if($c ne $oldc) { + print "\n$c ($date)$extra"; + } + else { + print "$extra"; + } + $line =0; + } + + $oldco = $co; + $oldc = $c; + $olddate = $date; + if($line++) { + print " "; + } + print $2."\n"; + } +} |