chiark / gitweb /
git-debrebase: suppress gbp pq export output
[dgit.git] / git-debrebase
index 9e8d7075d42e32bb24a270ecaf9db217162c4ad0..fd05c6b46a67ab92e2db225e198910d17cb5c9ec 100755 (executable)
@@ -34,6 +34,7 @@ use Data::Dumper;
 use Getopt::Long qw(:config posix_default gnu_compat bundling);
 use Dpkg::Version;
 use File::FnMatch qw(:fnmatch);
+use File::Copy;
 
 our ($opt_force, $opt_noop_ok, @opt_anchors);
 our ($opt_defaultcmd_interactive);
@@ -1216,11 +1217,13 @@ sub cmd_new_upstream () {
           ) {
            my @oldpieces = (split / /, $1);
            my $old_n_parents = scalar @{ $old_upstream->{Parents} };
-           if (@oldpieces != $old_n_parents) {
+           if ($old_n_parents != @oldpieces &&
+               $old_n_parents != @oldpieces + 1) {
                snag 'upstream-confusing', sprintf
                    "previous upstream combine %s".
-                   " mentions %d pieces (each implying one orig commit)".
-                   " but has %d parents",
+                   " mentions %d pieces (each implying one parent)".
+                   " but has %d parents".
+                   " (one per piece plus maybe a previous combine)",
                    $old_upstream->{CommitId},
                    (scalar @oldpieces),
                    $old_n_parents;
@@ -1233,7 +1236,8 @@ sub cmd_new_upstream () {
                $oldpieces[0] = '';
                foreach my $i (0..$#oldpieces) {
                    my $n = $oldpieces[$i];
-                   $piece->($n, Old => $old_upstream->{CommitId}.'^'.($i+1));
+                   my $hat = 1 + $i + ($old_n_parents - @oldpieces);
+                   $piece->($n, Old => $old_upstream->{CommitId}.'^'.$hat);
                }
            }
        } else {
@@ -1492,7 +1496,12 @@ sub make_patches_staged ($) {
     in_workarea sub {
        runcmd @git, qw(checkout -q -b bw), $secret_bw;
        runcmd @git, qw(checkout -q -b patch-queue/bw), $secret_head;
-       runcmd qw(gbp pq export);
+       my @gbp_cmd = (qw(gbp pq export));
+       my $r = system shell_cmd 'exec >../gbp-pq-err 2>&1', @gbp_cmd;
+       if ($r) {
+           { local ($!,$?); copy('../gbp-pq-err', \*STDERR); }
+           failedcmd @gbp_cmd;
+       }
        runcmd @git, qw(add debian/patches);
     };
 }