chiark / gitweb /
dgit: quilt fixup: Do not suggest quilt modes if we see gdr
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 2a3d9ac45cbb7909002bccd1750ad7d8b4b4a1c2..6377e327091bfd900ddaa0746b78aaf998aa6660 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -5368,9 +5368,17 @@ sub quiltify ($$$$) {
        };
        if ($quilt_mode eq 'linear') {
            print STDERR "\n$us: error: quilt fixup cannot be linear.  Stopped at:\n";
+           my $all_gdr = !!@nots;
            foreach my $notp (@nots) {
                print STDERR "$us:  ", $reportnot->($notp), "\n";
+               $all_gdr &&= $notp->{Child} &&
+                   (git_cat_file $notp->{Child}{Commit}, 'commit')
+                   =~ m{^\[git-debrebase.*\]$}m;
            }
+           print STDERR "\n";
+           $failsuggestion =
+               [ grep { $_->[0] ne 'quilt-mode' } @$failsuggestion ]
+               if $all_gdr;
            print STDERR "$us: $_->[1]\n" foreach @$failsuggestion;
            fail
  "quilt history linearisation failed.  Search \`quilt fixup' in dgit(7).\n";
@@ -5923,7 +5931,7 @@ END
     push @failsuggestion, [ 'quilt-mode', "Maybe you need to specify one of".
         " --[quilt=]gbp --[quilt=]dpm --quilt=unapplied ?" ],
            [ 'origs',
- "Or, maybe orig tarball(s) are not identical to git representation?" ];
+ "Maybe orig tarball(s) are not identical to git representation?" ];
 
     if (quiltmode_splitbrain()) {
        quiltify_splitbrain($clogp, $unapplied, $headref, $oldtiptree,