If we don't have an upstream, there is nothing to merge, so nothing is
unmerged. This avoids errors like:
$ nmbug status
error: No upstream configured for branch 'master'
error: No upstream configured for branch 'master'
fatal: ambiguous argument '@{upstream}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
'git rev-parse @{upstream}' exited with nonzero value
You might not have an upstream if you're only using nmbug locally to
version-control your tags.
sub is_unmerged {
my $commit = shift || '@{upstream}';
- my $fetch_head = git ('rev-parse', $commit);
+ my ($fetch_head, $status) = git_with_status ('rev-parse', $commit);
+ if ($status) {
+ return 0;
+ }
my $base = git ( 'merge-base', 'HEAD', $commit);
return ($base ne $fetch_head);