+sub cmd_record_resolved_merge () {
+ badusage "record-resolved-merge takes no further arguments" if @ARGV;
+ # xxx needs documentation
+ my $new = get_head();
+ my $method;
+
+ print "Checking how you have resolved the merge problem\n";
+ my $nope = sub { print "Not $method: @_"; 0; };
+
+ my $maybe = sub { print "Seems to be $method.\n"; };
+ my $yes = sub {
+ my ($key, $ref) = @_;
+ reflog_cache_insert $merge_cache_ref, $key, $ref;
+ print "OK. You can switch branches and try git-debrebase again.\n";
+ 1;
+ };
+
+ fresh_workarea 'merge';
+ sub {
+ $method = 'vanilla-merge patchqueue';
+ my $vanilla = git_get_ref "$wrecknoteprefix/vanilla-merge";
+ $vanilla or return $nope->("wreckage was not of vanilla-merge");
+ foreach my $lr (qw(left right)) {
+ my $n = "$wrecknoteprefix/$lr-patchqueue";
+ my $lrpq = git_get_ref $n;
+ $lrpq or return $nope->("wreckage did not contain patchqueues");
+ is_fast_fwd $lrpq, $new or return $nope->("HEAD not ff of $n");
+ }
+ $maybe->();
+ my $newbase = git_get_ref "$wrecknoteprefix/new-base"
+ or die "wreckage element $wrecknoteprefix/new-base missing";
+ my $result = merge_series_patchqueue_convert
+ {}, $newbase, $new;
+ $yes->("vanilla-merge $vanilla", $result);
+ 1;
+ }->() or sub {
+ fail "No resolved merge method seems applicable.\n";
+ }->();
+}
+