X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=git-debrebase;h=4a1ea570d9ed299692153b132033abab379539fd;hp=28cbc8891ba1400aff860309af1db841ac189d09;hb=17dce7274cfdba60a0c5c4c37045a4a37c070146;hpb=3a9a1727d1499ceb465a9494ac31c87c87ae913d diff --git a/git-debrebase b/git-debrebase index 28cbc889..4a1ea570 100755 --- a/git-debrebase +++ b/git-debrebase @@ -253,8 +253,8 @@ sub make_commit ($$) { } our $fproblems; -sub fproblem ($) { - my ($msg) = @_; +sub fproblem ($$) { + my ($tag,$msg) = @_; $fproblems++; print STDERR "git-debrebase: safety catch tripped: $msg\n"; } @@ -375,6 +375,9 @@ sub classify ($) { $r->{Msg} =~ m{^\[git-debrebase breakwater.*\]$}m; if (@p == 1) { + if ($claims_to_be_breakwater) { + return $unknown->("single-parent git-debrebase breakwater \`merge'"); + } my $d = $r->{Parents}[0]{Differs}; if ($d == D_PAT_ADD) { return $classify->(qw(AddPatches)); @@ -893,18 +896,22 @@ sub cmd_new_upstream_v0 () { $piece->($n, Old => $old_upstream->{CommitId}.'^'.$parentix); } } else { - fproblem "previous upstream $old_upstream->{CommitId} is from". - " git-debrebase but not an \`upstream-combine' commit"; + fproblem 'upstream-confusing', + "previous upstream $old_upstream->{CommitId} is from". + " git-debrebase but not an \`upstream-combine' commit"; } } foreach my $pc (values %pieces) { if (!$pc->{Old}) { - fproblem "introducing upstream piece \`$pc->{Name}'"; + fproblem 'upstream-new-piece', + "introducing upstream piece \`$pc->{Name}'"; } elsif (!$pc->{New}) { - fproblem "dropping upstream piece \`$pc->{Name}'"; + fproblem 'upstream-rm-piece', + "dropping upstream piece \`$pc->{Name}'"; } elsif (!is_fast_fwd $pc->{Old}, $pc->{New}) { - fproblem "not fast forward: $pc->{Name} $pc->{Old}..$pc->{New}"; + fproblem 'upstream-not-ff', + "not fast forward: $pc->{Name} $pc->{Old}..$pc->{New}"; } } @@ -1013,19 +1020,22 @@ sub cmd_gbp2debrebase () { } if (!is_fast_fwd $upstream, $old_head) { - fproblem "upstream ($upstream) is not an ancestor of HEAD"; + fproblem 'upstream-not-ancestor', + "upstream ($upstream) is not an ancestor of HEAD"; } else { my $wrong = cmdoutput (@git, qw(rev-list --ancestry-path), "$upstream..HEAD", qw(-- :/ :!/debian)); if (length $wrong) { - fproblem "history between upstream ($upstream) and HEAD contains direct changes to upstream files - are you sure this is a gbp (patches-unapplied) branch?"; + fproblem 'unexpected-upstream-changes', + "history between upstream ($upstream) and HEAD contains direct changes to upstream files - are you sure this is a gbp (patches-unapplied) branch?"; print STDERR "list expected changes with: git log --stat --ancestry-path $upstream_spec..HEAD -- :/ ':!/debian'\n"; } } if ((git_cat_file "$upstream:debian")[0] ne 'missing') { - fproblem "upstream ($upstream) contains debian/ directory"; + fproblem 'upstream-has-debian', + "upstream ($upstream) contains debian/ directory"; } fproblems_maybe_bail();