diff options
author | Daniel Stenberg <daniel@haxx.se> | 2010-06-19 23:08:34 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2010-06-19 23:08:34 +0200 |
commit | bd5d478dd4ac3d09c70cf59776e08975a9c75511 (patch) | |
tree | bf57a4e5cf378c2e226c0fd7129dbf5f113337de | |
parent | 1b15b31c8631a4a271f15c4261331dcebec9ba47 (diff) |
log2changes: first version of the git log to CHANGES conversion script
$ git log --pretty=fuller --no-color --date=short | ./log2changes.pl
Of course, limiting the log output with a range like with
"[tag]..HEAD" appended can be very useful too.
-rwxr-xr-x | log2changes.pl | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/log2changes.pl b/log2changes.pl new file mode 100755 index 000000000..53e005790 --- /dev/null +++ b/log2changes.pl @@ -0,0 +1,59 @@ +#!/usr/bin/perl + +# git log --pretty=fuller --no-color --date=short + +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; +} + +my $line; +while(<STDIN>) { + my $l = $_; + + if($l =~/^commit (.*)/) { + $co = $1; + } + elsif($l =~ /^Author: *(.*) +</) { + $a = $1; + } + elsif($l =~ /^Commit: *(.*) +</) { + $c = $1; + } + elsif($l =~ /^CommitDate: (.*)/) { + $date = nicedate($1); + } + elsif($l =~ /^( )(.*)/) { + my $extra; + 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"; + } +} |