#!/usr/bin/perl
# Feed whats-cooking to this to find what to merge to 'master'

sub merged {
	my ($topic, $base) = @_;
	my $fh;
	(open $fh, "-|", qw(git rev-list), "^$base", $topic)
	    or die "$!";
	my $count = 0;
	while (<$fh>) {
		$count++;
	}
	(close $fh)
	    or die "$! (after $count for $topic)";
	return $count;
}

my ($topic, $topic_date, $last);
my (@candidate);

while (<>) {
	if (/^\* ([a-z][a-z]\/[-a-zA-Z0-9_]+) \(([-0-9]{10})\) \d+ commit/) {
		$topic = $last = $1;
		$topic_date = $2;
		next;
	}
	if (defined $topic) {
		if (/^  \(merged to 'next' on ([-0-9]{10}) at/) {
			push @candidate, [$topic, $1, $topic_date, ""];
			next;
		}
		$topic = undef;
		$topic_date = undef;
	}
	if (defined $last && @candidate && $candidate[-1][0] eq $last) {
		if (/Will merge to 'master'/i) {
			$candidate[-1][3] = "*";
		}
	}
}

for $topic (sort { ($a->[1] cmp $b->[1]) || ($a->[2] cmp $b->[2]) } @candidate) {
	my $count = merged($topic->[0], 'master');
	if ($count) {
		print "$topic->[1] $topic->[2] ($count)	$topic->[3]$topic->[0]\n";
	}
}
