summaryrefslogtreecommitdiff
path: root/log2changes.pl
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2010-06-19 23:08:34 +0200
committerDaniel Stenberg <daniel@haxx.se>2010-06-19 23:08:34 +0200
commitbd5d478dd4ac3d09c70cf59776e08975a9c75511 (patch)
treebf57a4e5cf378c2e226c0fd7129dbf5f113337de /log2changes.pl
parent1b15b31c8631a4a271f15c4261331dcebec9ba47 (diff)
downloadcurl-bd5d478dd4ac3d09c70cf59776e08975a9c75511.tar.gz
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.
Diffstat (limited to 'log2changes.pl')
-rwxr-xr-xlog2changes.pl59
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";
+ }
+}