X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=git-debrebase;h=acf4c8564749a9a812c4d17dca4749cdb80584b0;hp=a853c0639c1cf1f0daad4f891e0c3838c1912b87;hb=d980524cd66e12eda58f9df6bc8410454febd3aa;hpb=e00c330eb5a8f42129fe1f2010f28b62780b0a68 diff --git a/git-debrebase b/git-debrebase index a853c063..acf4c856 100755 --- a/git-debrebase +++ b/git-debrebase @@ -32,7 +32,7 @@ # git-debrebase [] stitch [--prose=] # git-debrebase [] downstream-rebase-launder-v0 # experimental # -# git-debrebase [] gbp2debrebase-v0 \ +# git-debrebase [] convert-from-gbp \ # # problems / outstanding questions: @@ -442,7 +442,7 @@ sub classify ($) { my @overwritten = grep { $_->{Differs} } @p; confess "internal error $objid ?" unless @overwritten==1; return $classify->(qw(Pseudomerge), - Overwritten => $overwritten[0], + Overwritten => [ $overwritten[0] ], Contributor => $identical[0]); } if (@p == 2 && @identical == 2) { @@ -453,7 +453,7 @@ sub classify ($) { } @p; return $classify->(qw(Pseudomerge), SubType => qw(Ambiguous), - Overwritten => $bytime[0], + Overwritten => [ $bytime[0] ], Contributor => $bytime[1]); } foreach my $p (@p) { @@ -627,7 +627,8 @@ sub walk ($;$$) { # suite intended by the non-dgit NMUer, and later # pseudomerges may represent in-archive copies. my $ovwrs = $pm->{Overwritten}; - printf $report " PM=%s \@Overwr:%d", $pm, (scalar @$ovwrs) + printf $report " PM=%s \@Overwr:%d", + $pm->{CommitId}, (scalar @$ovwrs) if $report; if (@$ovwrs != 1) { printdebug "*** WALK BOMB DgitImportUnpatched\n"; @@ -650,26 +651,15 @@ sub walk ($;$$) { %$cl, SpecialMethod => 'DgitImportDebianUpdate', $xmsg->("convert dgit import: debian changes") + }, { + %$cl, + SpecialMethod => 'DgitImportUpstreamUpdate', + $xmsg->("convert dgit import: upstream update", + " breakwater") }; - my $differs = (get_differs $ovwr, $cl->{Tree}); - printf $report " Differs=%#x", $differs if $report; - if ($differs & D_UPS) { - printf $report " D_UPS" if $report; - # This will also trigger if a non-dgit git-based NMU - # deleted .gitignore (which is a thing that some of - # the existing git tools do if the user doesn't - # somehow tell them not to). Ah well. - push @brw_cl, { - %$cl, - SpecialMethod => 'DgitImportUpstreamUpdate', - $xmsg->("convert dgit import: upstream changes", - " breakwater") - }; - } $prline->(" Import"); $rewrite_from_here->(); $upp_limit //= $#upp_cl; # further, deeper, patches discarded - die 'BUG $upp_limit is not used anywhere?'; $cur = $ovwr; next; } else { @@ -711,6 +701,8 @@ sub walk ($;$$) { runcmd @git, qw(read-tree), $treeish; $read_tree_debian->($build); }; + + $#upp_cl = $upp_limit if defined $upp_limit; my $committer_authline = calculate_committer_authline(); @@ -746,8 +738,10 @@ sub walk ($;$$) { next; } elsif ($method eq 'DgitImportDebianUpdate') { $read_tree_debian->($cltree); - rm_subdir_cached qw(debian/patches); } elsif ($method eq 'DgitImportUpstreamUpdate') { + confess unless $rewriting; + my $differs = (get_differs $build, $cltree); + next unless $differs & D_UPS; $read_tree_upstream->($cltree); push @parents, map { $_->{CommitId} } @{ $cl->{OrigParents} }; } else { @@ -763,7 +757,7 @@ sub walk ($;$$) { my $newtree = cmdoutput @git, qw(write-tree); my $ch = $cl->{Hdr}; $ch =~ s{^tree .*}{tree $newtree}m or confess "$ch ?"; - $ch =~ s{^parent .*\n}{}m; + $ch =~ s{^parent .*\n}{}mg; $ch =~ s{(?=^author)}{ join '', map { "parent $_\n" } @parents }me or confess "$ch ?"; @@ -1169,7 +1163,7 @@ END close U or failedcmd @upd_cmd; } -sub cmd_gbp2debrebase () { +sub cmd_convert_from_gbp () { badusage "needs 1 optional argument, the upstream" unless @ARGV<=1; my ($upstream_spec) = @ARGV; $upstream_spec //= 'refs/heads/upstream'; @@ -1216,9 +1210,9 @@ sub cmd_gbp2debrebase () { runcmd @git, qw(checkout -q gdr-internal~0); rm_subdir_cached 'debian/patches'; $work = make_commit ['HEAD'], [ - 'git-debrebase import: drop patch queue', + 'git-debrebase convert-from-gbp: drop patch queue', 'Delete debian/patches, as part of converting to git-debrebase format.', - '[git-debrebase: gbp2debrebase, drop patches]' + '[git-debrebase convert-from-gbp: drop patches]' ]; # make the breakwater pseudomerge # the tree is already exactly right @@ -1234,7 +1228,7 @@ sub cmd_gbp2debrebase () { $work = git_rev_parse 'HEAD'; }; - update_head_checkout $old_head, $work, 'gbp2debrebase'; + update_head_checkout $old_head, $work, 'convert-from-gbp'; } sub cmd_downstream_rebase_launder_v0 () {