summaryrefslogtreecommitdiffstats
path: root/bin/git/git-unmerged
blob: 4e16caff96bd0396ff3d72e8725a40ddf41faea6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env perl
use strict;
use warnings;

sub git {
    if (wantarray) {
        chomp(my @ret = qx{git $_[0]});
        return @ret;
    }
    else {
        chomp(my $ret = qx{git $_[0]});
        return $ret;
    }
}

my $branch = git 'symbolic-ref HEAD';
$branch ||= 'master';
$branch =~ s:^refs/heads/::;

my @remotes = git 'remote show';
my %remotes = map { $_, "$_/$branch" } @remotes;

for my $remote (keys %remotes) {
    my $remote_branch = $remotes{$remote};
    my $tip = git "show-ref -s --abbrev $remote_branch";
    my $merge_base = git "merge-base HEAD $remote_branch";
    $merge_base = substr $merge_base, 0, 7;
    next if $merge_base eq $tip;
    print "$remote: $merge_base..$tip\n";
}