X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=git-debrebase;h=3be444b935e4af4e02a2e50e2e61cbf0230e4b81;hp=eabf5adad7f81df0236f6922b7e624192b2d40d3;hb=d74ea48e54d4bf0902bfe2364cde833d27e40ad8;hpb=6320a38e58a33f648f701d43946831fc166fab6f diff --git a/git-debrebase b/git-debrebase index eabf5ada..3be444b9 100755 --- a/git-debrebase +++ b/git-debrebase @@ -50,11 +50,9 @@ usages: See git-debrebase(1), git-debrebase(5), dgit-maint-debrebase(7) (in dgit). END -our ($opt_force, $opt_careful, $opt_noop_ok, @opt_anchors); +our ($opt_force, $opt_noop_ok, $opt_merges, @opt_anchors); our ($opt_defaultcmd_interactive); -$opt_careful = 0; - our $us = qw(git-debrebase); our $wrecknoteprefix = 'refs/debrebase/wreckage'; @@ -446,11 +444,7 @@ sub gbp_pq_export ($$$) { } -# xxx allow merge resolution separately from laundering, before git merge -# -# xxx general gdr docs highlight forbidden things -# xxx general gdr docs list allowable things ? -# xxx general gdr docs explicitly forbid some rebase +# MERGE-TODO allow merge resolution separately from laundering, before git merge # later/rework? # use git-format-patch? @@ -687,6 +681,8 @@ sub merge_series_patchqueue_convert ($$$) { runcmd @git, qw(checkout -q -b mergec), $merged_pq; merge_attempt_cmd($wrecknotes, qw(gbp pq import)); + # MERGE-TODO consider git-format-patch etc. instead, + # since gbp pq doesn't always round-trip :-/ # OK now we are on patch-queue/merge, and we need to rebase # onto the intended parent and drop the patches from each one @@ -982,7 +978,6 @@ sub classify ($) { if (@p == 2 and $r->{Msg} =~ m{^\[git-debrebase merged-breakwater.*\]$}m) { - # xxx ^ metadata tag needs adding to (5) return $classify->("MergedBreakwaters"); } if ($r->{Msg} =~ m{^\[(git-debrebase|dgit)[: ].*\]$}m) { @@ -992,7 +987,7 @@ sub classify ($) { return $unknown->("octopus merge"); } - if (!$ENV{GIT_DEBREBASE_EXPERIMENTAL_MERGE}) { + if (!$opt_merges) { return $unknown->("general two-parent merge"); } @@ -1313,7 +1308,7 @@ sub walk ($;$$$) { # which was reachable via ffq-prev is no longer findable. # This is suboptimal, but if it all works we'll have done # the right thing. - # xxx we should warn the user in the docs about this + # MERGE-TODO we should warn the user in the docs about this my $ok=1; my $best_anchor; @@ -1605,7 +1600,7 @@ sub walk ($;$$$) { printdebug "WALK REWRITING NOW cl=$cl procd=$procd\n"; } } - if ($rewriting || $opt_careful) { + if ($rewriting) { read_tree_upstream $want_upstream, 0, $want_debian; my $newtree = cmdoutput @git, qw(write-tree); @@ -2477,12 +2472,14 @@ END my $mtag = cmdoutput @git, qw(describe --always --abbrev=0 --match), $mtag_pat; die "could not find suitable maintainer view tag $mtag_pat\n" - unless $mtag_pat =~ m{/}; + unless $mtag =~ m{/}; is_fast_fwd $mtag, 'HEAD' or die "HEAD is not FF from maintainer tag $mtag!"; my $dtag = "archive/$mtag"; + git_get_ref "refs/tags/$dtag" or + die "dgit view tag $dtag not found\n"; is_fast_fwd $mtag, $dtag or - die "dgit view tag $dtag is not FF from maintainer tag $mtag"; + die "dgit view tag $dtag is not FF from maintainer tag $mtag\n"; print "will stitch in dgit view, $dtag\n"; git_rev_parse $dtag; }; @@ -2760,7 +2757,7 @@ END sub cmd_record_resolved_merge () { badusage "record-resolved-merge takes no further arguments" if @ARGV; - # xxx needs documentation + # MERGE-TODO needs documentation my $new = get_head(); my $method; @@ -2855,6 +2852,7 @@ getoptions_main 'anchor=s' => \@opt_anchors, '--dgit=s' => \($dgit[0]), 'force!', + 'experimental-merge-resolution!', \$opt_merges, '-i:s' => sub { my ($opt,$val) = @_; badusage "git-debrebase: no cuddling to -i for git-rebase"