chiark / gitweb /
git-debrebase: merge: Actually record merge resolutions
[dgit.git] / git-debrebase
index 09e0907d0b4bb6a4d12435e9a053175ceccd1ecd..96966adb3bb07b1c81a90da3427057d7ecc6c6f9 100755 (executable)
@@ -56,6 +56,7 @@ our ($opt_defaultcmd_interactive);
 our $us = qw(git-debrebase);
 
 our $wrecknoteprefix = 'refs/debrebase/wreckage';
+our $merge_cache_ref = 'refs/debrebase/merge-resolutions';
 
 $|=1;
 
@@ -2216,6 +2217,10 @@ sub cmd_scrap () {
            "update $gdrlast $ffq_prev_commitish $git_null_obj",
            "update $ffq_prev $git_null_obj $ffq_prev_commitish";
     }
+    if (git_get_ref $merge_cache_ref) {
+       push @deferred_updates,
+           "delete $merge_cache_ref";
+    }
     if (!@deferred_updates) {
        fail "No ongoing git-debrebase session." unless $opt_noop_ok;
        finish 0;
@@ -2622,6 +2627,7 @@ END
 
 sub cmd_record_resolved_merge () {
     badusage "record-resolved-merge takes no further arguments" if @ARGV;
+    # xxx needs documentation
     my $new = get_head();
     my $method;
 
@@ -2631,8 +2637,8 @@ sub cmd_record_resolved_merge () {
     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";
-       confess "todo $ref"; # xxx
        1;
     };