X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=git-debrebase;h=6d8091e63bfb880b42a56aa1387d8d0b1a0aacfd;hp=88118aa42c6decdc923647bc7dcd241a03fbec40;hb=3b8767bcfc8fd709e0f70d876617e69de809e787;hpb=850b9cacb62d6009cb503cbec266174fe92a90a7 diff --git a/git-debrebase b/git-debrebase index 88118aa4..6d8091e6 100755 --- a/git-debrebase +++ b/git-debrebase @@ -371,7 +371,13 @@ sub classify ($) { return $r; }; + my $claims_to_be_breakwater = + $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)); @@ -405,7 +411,10 @@ sub classify ($) { } my @identical = grep { !$_->{Differs} } @p; - if (@p == 2 && @identical == 1) { + if (@p == 2 && @identical == 1 && !$claims_to_be_breakwater + # breakwater merges can look like pseudomerges, if they are + # "declare" commits (ie, there are no upstream changes) + ) { my @overwritten = grep { $_->{Differs} } @p; confess "internal error $objid ?" unless @overwritten==1; return $classify->(qw(Pseudomerge), @@ -492,10 +501,11 @@ sub walk ($;$$) { my $cl; my $xmsg = sub { - my ($appendinfo) = @_; + my ($prose, $info) = @_; my $ms = $cl->{Msg}; chomp $ms; - $ms .= "\n\n[git-debrebase $appendinfo]\n"; + $info //= ''; + $ms .= "\n\n[git-debrebase$info: $prose]\n"; return (Msg => $ms); }; my $rewrite_from_here = sub { @@ -628,7 +638,8 @@ sub walk ($;$$) { push @brw_cl, { %$cl, SpecialMethod => 'DgitImportUpstreamUpdate', - $xmsg->("convert dgit import: upstream changes") + $xmsg->("convert dgit import: upstream changes", + " breakwater") }; } $prline->(" Import"); @@ -876,7 +887,7 @@ sub cmd_new_upstream_v0 () { if ($old_upstream->{Msg} =~ m{^\[git-debrebase }m) { if ($old_upstream->{Msg} =~ - m{^\[git-debrebase (?:\w*-)?upstream combine \.((?: $extra_orig_namepart_re)+)\]} + m{^\[git-debrebase upstream-combine \.((?: $extra_orig_namepart_re)+)\:.*\]$}m ) { my @oldpieces = ('', split / /, $1); my $parentix = -1 + scalar @{ $old_upstream->{Parents} }; @@ -886,7 +897,7 @@ sub cmd_new_upstream_v0 () { } } else { fproblem "previous upstream $old_upstream->{CommitId} is from". - " git-debrebase but not an \`upstream combine' commit"; + " git-debrebase but not an \`upstream-combine' commit"; } } @@ -930,9 +941,9 @@ sub cmd_new_upstream_v0 () { # need to make the upstream subtree merge commit $new_upstream = make_commit \@upstream_merge_parents, [ "Combine upstreams for $new_upstream_version", - ("[git-debrebase new-upstream combine . ". - (join " ", map { $_->{Name} } @newpieces[1..$#newpieces]). - "]"), + ("[git-debrebase upstream-combine . ". + (join " ", map { $_->{Name} } @newpieces[1..$#newpieces]). + ": new upstream]"), ]; } @@ -945,7 +956,7 @@ sub cmd_new_upstream_v0 () { # index now contains the breakwater merge contents $new_bw = make_commit [ $old_bw, $new_upstream ], [ "Update to upstream $new_upstream_version", - "[git-debrebase new-upstream breakwater $new_upstream_version]", + "[git-debrebase breakwater: new upstream $new_upstream_version, merge]", ]; # Now we have to add a changelog stanza so the Debian version @@ -973,7 +984,7 @@ END # Now we have the final new breakwater branch in the index $new_bw = make_commit [ $new_bw ], [ "Update changelog for new upstream $new_upstream_version", - "[git-debrebase new-upstream changelog $new_upstream_version]", + "[git-debrebase: new upstream $new_upstream_version, changelog]", ]; }; @@ -1035,14 +1046,14 @@ sub cmd_gbp2debrebase () { $work = make_commit ['HEAD'], [ 'git-debrebase import: drop patch queue', 'Delete debian/patches, as part of converting to git-debrebase format.', - '[git-debrebase gbp2debrebase drop-patches]' + '[git-debrebase: gbp2debrebase, drop patches]' ]; # make the breakwater pseudomerge # the tree is already exactly right $work = make_commit [$work, $upstream], [ 'git-debrebase import: declare upstream', 'First breakwater merge.', - '[git-debrebase declare-upstream breakwater]' + '[git-debrebase breakwater: declare upstream]' ]; # rebase the patch queue onto the new breakwater