[Libreoffice-commits] dev-tools.git: scripts/aoo-annotate.pl

Michael Meeks michael.meeks at suse.com
Wed Feb 27 04:17:48 PST 2013


 scripts/aoo-annotate.pl |   86 ++++++++++++++++++++++++++++++------------------
 1 file changed, 54 insertions(+), 32 deletions(-)

New commits:
commit 3052ccd593da43973343f2e9b834b4d56228677a
Author: Michael Meeks <michael.meeks at suse.com>
Date:   Wed Feb 27 12:17:05 2013 +0000

    prettier printing etc.

diff --git a/scripts/aoo-annotate.pl b/scripts/aoo-annotate.pl
index c55d72b..781bd26 100755
--- a/scripts/aoo-annotate.pl
+++ b/scripts/aoo-annotate.pl
@@ -1,23 +1,6 @@
 #!/usr/bin/perl -w
 
-# use strict;
-
-sub read_git_notes($)
-{
-    my $git_dir = shift;
-    my %has_note;
-    my $outputh;
-
-    print STDERR "read legacy tags from notes\n";
-    open ($outputh, "cd $git_dir ; git notes list |") || die "can't read git notes";
-    while (<$outputh>) {
-	/\s*(\S+)\s+(\S+)$/ || die "badly formatted '\$ git notes list' output";
-	$has_note{$2} = 1;
-    }
-    close ($outputh);
-
-    return \%has_note;
-}
+use strict;
 
 sub clean_note($)
 {
@@ -33,7 +16,7 @@ sub read_log($)
     my @revisions;
     my $outputh;
 
-    print STDERR "read revisions:\n";
+#    print STDERR "read revisions:\n";
     open ($outputh, "cd $git_dir ; git --no-pager log --pretty='%H,%cn,%ce,%cd,>>%s<<>>%N<<' aoo/approx-3.4.0..origin/aoo/trunk|") || die "can't get git log: $!";
     while (<$outputh>) {
 	my $line = $_;
@@ -74,6 +57,8 @@ sub dump_breakdown($)
     my $rev_count = scalar (@{$revs});
     my $annotated = 0;
     my %frequency;
+    my $contiguous = 0;
+    my $in_start_run = 1;
     for my $rev (@{$revs}) {
 	if($rev->{note} ne "") {
 	    my $stem = $rev->{note};
@@ -82,34 +67,71 @@ sub dump_breakdown($)
 	    $frequency{$stem} = 0 if (!defined $frequency{$stem});
 	    $frequency{$stem}++;
 	    $annotated++;
+	    $contiguous++ if ($in_start_run);
+	} else {
+	    $in_start_run = 0;
 	}
     }
 
     print STDERR "$annotated annotations of $rev_count commits\n";
+    print STDERR "with an initial block of $contiguous annotation\n";
     for my $stem (sort { $frequency{$b} <=> $frequency{$a} } keys %frequency) {
 	print STDERR "$frequency{$stem}\t$stem\n";
     }
 }
 
-my $git_dir = shift @ARGV;
+sub usage()
+{
+    print STDERR "Usage: aoo-annotate.pl [args] [/path/to/git]\n";
+    print STDERR "annotate AOO commits as to their status\n";
+    print STDERR "\n";
+    print STDERR "  -a, --all    list all commits regardless of status\n";
+    print STDERR "  -n, --notes  list just commits with notes\n";
+    print STDERR "  -h, --help   show this\n";
+    print STDERR "  -s, --stats  show stats on merging\n";
+}
+
+my $git_dir;
+my $stats = 0;
+my $all = 0;
+my $notes = 0;
+
+for my $arg (@ARGV) {
+    if ($arg eq '--help' || $arg eq '-h') {
+	usage();
+	exit;
+    } elsif ($arg eq '--stats' || $arg eq '-s') {
+	$stats = 1;
+    } elsif ($arg eq '--all' || $arg eq '-a') {
+	$all = 1;
+    } elsif ($arg eq '--notes' || $arg eq '-n') {
+	$notes = 1;
+    } elsif (!defined $git_dir) {
+	$git_dir = $arg;
+    } else {
+	usage ();
+	die "unknown argument: $arg";
+    }
+}
 
 if (!defined $git_dir) {
     $git_dir = `pwd`;
 }
 
-my $has_note = read_git_notes($git_dir);
 my $revs = read_log($git_dir);
 
-
-
-print STDERR "\n";
-print STDERR "Commits:\n";
-for my $rev (@{$revs}) {
-
-    my $note = $rev->{note};
-    chomp ($note);
-    print "$rev->{hash}\t$rev->{note}\n";
+if (!$stats) {
+    print STDERR "Commits:\n";
+    for my $rev (@{$revs}) {
+	my $note = $rev->{note};
+	chomp ($note);
+	my $has_note = ($note ne "");
+	my $printit = $all || ($has_note && $notes) || (!$has_note && !$notes);
+	print "$rev->{hash}\t$rev->{note}\n" if ($printit);
+    }
 }
 
-print STDERR "\n";
-dump_breakdown ($revs);
+if ($stats == 1) {
+    print STDERR "\n";
+    dump_breakdown ($revs);
+}


More information about the Libreoffice-commits mailing list