summaryrefslogtreecommitdiff
path: root/git2changes.pl
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2011-08-21 15:36:52 +0200
committerDaniel Stenberg <daniel@haxx.se>2011-08-21 15:40:14 +0200
commit2d9a5acff5081303b7d4106875d42cce7fce043d (patch)
treea3d33e066d59b1075031424bd88e6f6e3381e543 /git2changes.pl
parent440b5d488a7325efb4b026f1295c36444727cdbd (diff)
downloadc-ares-2d9a5acff5081303b7d4106875d42cce7fce043d.tar.gz
c-ares-2d9a5acff5081303b7d4106875d42cce7fce043d.tar.bz2
c-ares-2d9a5acff5081303b7d4106875d42cce7fce043d.zip
CHANGES: generate from script
The CHANGES file is now generated automatically with 'git2changes.pl', invoked by the maketgz script which is used to build release archives. The former human edited CHANGES file was renamed to CHANGES.0 in git.
Diffstat (limited to 'git2changes.pl')
-rwxr-xr-xgit2changes.pl77
1 files changed, 77 insertions, 0 deletions
diff --git a/git2changes.pl b/git2changes.pl
new file mode 100755
index 0000000..21880b7
--- /dev/null
+++ b/git2changes.pl
@@ -0,0 +1,77 @@
+#!/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 for the c-ares project. Generated with git2changes.pl
+';
+
+my $line;
+my $tag;
+while(<STDIN>) {
+ my $l = $_;
+
+ if($l =~/^commit ([[:xdigit:]]*) ?(.*)/) {
+ $co = $1;
+ my $ref = $2;
+ if ($ref =~ /refs\/tags\/c[-]*ares-([0-9._]*)/) {
+ $tag = $1;
+ $tag =~ s/_/./g;
+ } else {
+ $tag = '';
+ }
+ }
+ 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";
+ }
+}