| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | #!/usr/bin/perluse warnings;use strict;sub nChanges {    my ($branches, $fname) = @_;    local *F;    # requires perl 5.8.  Avoids shell issues if we ever get a changes    # file named by the parents of Little Johnny Tables.    open F, "-|", "git", "log", "--pretty=format:%H", $branches, "--", $fname	or die "$!";    my @changes = <F>;    return scalar @changes}my $look_for_type = "merged";while (@ARGV and $ARGV[0] =~ /^--/) {    my $flag = shift @ARGV;    if ($flag =~ /^--(weird|merged|unmerged|list)/) {	$look_for_type = $1;    } else {	die "Unrecognized flag $flag";    }}for my $changefile (@ARGV) {    my $n_merged = nChanges("origin/release-0.2.2", $changefile);    my $n_postmerged = nChanges("origin/release-0.2.2..origin/master", $changefile);    my $type;    if ($n_merged != 0 and $n_postmerged == 0) {	$type = "merged";    } elsif ($n_merged == 0 and $n_postmerged != 0) {	$type = "unmerged";    } else {	$type = "weird";    }    if ($type eq $look_for_type) {	print "$changefile\n";    } elsif ($look_for_type eq 'list') {	printf "% 8s: %s\n", $type, $changefile;    }}
 |