X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=git-debrebase;h=c32f257a5f0543d1d73c5c477aedb4ddd01aecf9;hp=92fa86b7483ca92cea57de2bafb7835573068961;hb=1ee8b4c148023302d6a90d662c90bd39a070e764;hpb=5958f33adfaa49981accb3cd4036916ac8daf64e diff --git a/git-debrebase b/git-debrebase index 92fa86b7..c32f257a 100755 --- a/git-debrebase +++ b/git-debrebase @@ -29,8 +29,8 @@ # git-debrebase [ --] [] # git-debrebase [] analyse # git-debrebase [] breakwater # prints breakwater tip only -# git-debrebase [] launder # prints breakwater tip etc. # git-debrebase [] stitch [--prose=] +# git-debrebase [] launder-v0 # prints breakwater tip etc. # git-debrebase [] downstream-rebase-launder-v0 # experimental # # git-debrebase [] convert-from-gbp [] @@ -412,7 +412,7 @@ sub classify ($) { my $badanchor = sub { $unknown->("git-debrebase \`anchor' but @_"); }; @p == 2 or return $badanchor->("has other than two parents"); - $haspatches and return $unknown->("contains debian/patches"); + $haspatches and return $badanchor->("contains debian/patches"); # How to decide about l/r ordering of anchors ? git # --topo-order prefers to expand 2nd parent first. There's @@ -421,26 +421,14 @@ sub classify ($) { # way also there's also an easy rune to look for the upstream # patches (--topo-order). - # The above tells us which way *we* will generate them. But we - # might encounter ad-hoc anchor merges generated manually, - # which might be the other way around. In principle, in some odd - # situations, an anchor merge might have two identical parents. - # In that case we guess which way round it is (ie, which parent - # has the upstream history). The order of the 2-iteration loop - # controls which guess we make. - - # XXX we are going to desupport non-git-debrebase-generated anchors - - foreach my $prevbrw (qw(0 1)) { - if (!$p[$prevbrw]{IsOrigin} && # breakwater never starts with an origin - !($p[!$prevbrw]{Differs} & ~DS_DEB) && # no non-debian changess - !($p[$prevbrw]{Differs} & ~D_UPS)) { # no non-upstream changes - return $classify->(qw(Anchor), - OrigParents => [ $p[!$prevbrw] ]); - } - } + $p[0]{IsOrigin} and $badanchor->("is an origin commit"); + $p[1]{Differs} & ~DS_DEB and + $badanchor->("upstream files differ from left parent"); + $p[0]{Differs} & ~D_UPS and + $badanchor->("debian/ differs from right parent"); - $badanchor->("violation"); + return $classify->(qw(Anchor), + OrigParents => [ $p[1] ]); } if (@p == 1) { @@ -869,8 +857,8 @@ sub update_head_postlaunder ($$$) { runcmd @git, qw(rm --quiet --ignore-unmatch -rf debian/patches); } -sub cmd_launder () { - badusage "no arguments to launder allowed" if @ARGV; +sub cmd_launder_v0 () { + badusage "no arguments to launder-v0 allowed" if @ARGV; my $old = get_head(); my ($tip,$breakwater,$last_anchor) = walk $old; update_head_postlaunder $old, $tip, 'launder';