nmbug: Handle missing @upstream in is_unmerged
authorW. Trevor King <wking@tremily.us>
Sun, 6 Jul 2014 20:40:20 +0000 (13:40 -0700)
committerDavid Bremner <david@tethera.net>
Wed, 16 Jul 2014 22:31:28 +0000 (19:31 -0300)
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.

devel/nmbug/nmbug

index 4a79722..998ee6b 100755 (executable)
@@ -430,7 +430,10 @@ sub do_status {
 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);