Add a script to generate the Changes file from git
authorLeon Brocard <acme@astray.com>
Mon, 16 Feb 2009 15:41:06 +0000 (23:41 +0800)
committerLeon Brocard <acme@astray.com>
Mon, 16 Feb 2009 15:41:06 +0000 (23:41 +0800)
Porting/genlog_git [new file with mode: 0755]

new file mode 100755 (executable)
index 0000000..5ae6cec
--- /dev/null
@@ -0,0 +1,44 @@
+#!perl
+use strict;
+use warnings;
+use IO::File;
+use Perl6::Say;
+use DateTime;
+
+my $fh = IO::File->new("git log --pretty=raw --stat -z | ") || die $!;
+$/ = "\0";
+while ( my $bit = <$fh> ) {
+    last if $bit =~ /p4raw-id/;
+$bit =~ s/git-svn-id.+$//m;
+
+    my ($commit) = $bit =~ /^commit ([a-z0-9]+)$/m;
+    my ( $author, $epoch ) = $bit =~ /^author (.+)<.+?> (\d+)/m;
+
+    my $dt = DateTime->from_epoch( epoch => $epoch );
+    my $datetime = $dt->ymd('/') . '  ' . $dt->hms;
+
+    my $comment = join ' ',
+        map { $_ =~ s/^    //; $_ } grep { $_ =~ /^    / } split "\n", $bit;
+    $comment =~ s/ {2,}/ /g;
+$comment =~ s/Log://;
+$comment =~ s/^ +//;
+    my $files = join ' ', map { $_ =~ s/^ //; $_ =~ s/ \|.+$//ms; $_ }
+        grep { $_ =~ /^ [a-zA-z.]/ } split "\n", $bit;
+    $files =~ s/ {2,}/ /g;
+
+    format STDOUT =
+____________________________________________________________________________
+[@<<<<<] By: acme                                  on @<<<<<<<<<<<<<<<<<<<<<
+$commit                                               $datetime
+        Log: ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+             $comment
+~~           ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+             $comment
+     Branch: maint-5.005/perl
+           ! ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+             $files
+~~           ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+             $files
+.
+    write STDOUT;
+}