diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2018-08-11 18:07:24 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2018-08-11 20:11:09 +0100 |
commit | 332806a67a034c88c2884b516ce2aaf8b317dd25 (patch) | |
tree | 9720bd367049f341f4307b198bc23ca961ed6273 | |
parent | 49e8f18bc896d9a9dd8aedb3495854c39439c86c (diff) |
git-debrebase: merge: Save wreckage if desired
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
-rwxr-xr-x | git-debrebase | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/git-debrebase b/git-debrebase index abf9157..589fa90 100755 --- a/git-debrebase +++ b/git-debrebase @@ -51,10 +51,12 @@ See git-debrebase(1), git-debrebase(5), dgit-maint-debrebase(7) (in dgit). END our ($opt_force, $opt_noop_ok, @opt_anchors); -our ($opt_defaultcmd_interactive); +our ($opt_defaultcmd_interactive, $opt_save_wreckage); our $us = qw(git-debrebase); +our $wrecknoteprefix = 'refs/debrebase-wreckage'; + $|=1; sub badusage ($) { @@ -373,6 +375,25 @@ sub merge_failed ($$) { my @m; push @m, "Merge resolution failed: $emsg"; + $opt_save_wreckage //= do { + my $c = cfg 'git-debrebase.merge.save-wreckage', 1; + # ^ xxx documentation + $c && $c =~ m/^[1ty]/; + }; + + if ($opt_save_wreckage) { + my @updates; + git_for_each_ref("$wrecknoteprefix/*", sub { + my ($objid,$objtype,$fullrefname,$reftail) = @_; + push @updates, "delete $fullrefname"; + }); + keys %$wrecknotes; + while (my ($k,$v) = each %$wrecknotes) { + push @updates, "create $wrecknoteprefix/$k $v"; + } + run_ref_updates_now "merge failed", \@updates; + push @m, "Wreckage left in $wrecknoteprefix/* as requested."; + } push @m, "See git-debrebase(1) section FAILED MERGES for suggestions."; # ^ xxx this section does not yet exist fail join '', map { "$_\n" } @m; @@ -2608,6 +2629,7 @@ getoptions_main 'anchor=s' => \@opt_anchors, '--dgit=s' => \($dgit[0]), 'force!', + '--save-wreckage', \$opt_save_wreckage, '-i:s' => sub { my ($opt,$val) = @_; badusage "git-debrebase: no cuddling to -i for git-rebase" |