summaryrefslogtreecommitdiff
path: root/git2changes.pl
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2011-08-21 13:36:52 (GMT)
committerDaniel Stenberg <daniel@haxx.se>2011-08-21 13:40:14 (GMT)
commit2d9a5acff5081303b7d4106875d42cce7fce043d (patch)
treea3d33e066d59b1075031424bd88e6f6e3381e543 /git2changes.pl
parent440b5d488a7325efb4b026f1295c36444727cdbd (diff)
downloadc-ares-2d9a5acff5081303b7d4106875d42cce7fce043d.zip
c-ares-2d9a5acff5081303b7d4106875d42cce7fce043d.tar.gz
c-ares-2d9a5acff5081303b7d4106875d42cce7fce043d.tar.bz2
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";
+ }
+}