diff options
-rwxr-xr-x | git-debrebase | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/git-debrebase b/git-debrebase index 5fcec54..a853c06 100755 --- a/git-debrebase +++ b/git-debrebase @@ -1150,15 +1150,23 @@ sub cmd_stitch () { if (!$prev) { fail "No ffq-prev to stitch." unless $opt_noop_ok; } - $prose = ", $prose" if length $prose; - runcmd @git, qw(merge -s ours --no-edit -m), <<END; -Declare fast forward / record previous work - -[git-debrebase pseudomerge: stitch$prose] + fresh_workarea(); + my $old_head = get_head(); + my $new_head = make_commit [ $old_head, $ffq_prev ], [ + 'Declare fast forward / record previous work', + "[git-debrebase pseudomerge: stitch$prose]", + ]; + my @upd_cmd = (@git, qw(update-ref --stdin)); + debugcmd '>|', @upd_cmd; + open U, "|-", @upd_cmd or die $!; + my $u = <<END; +update HEAD $new_head $old_head +delete $ffq_prev $prev END - # xxx should delete old ffq-prev - # xxx should avoid making pseudomerge if not needed - # xxx should make pseudomerge in temp tree so can do atomic update + printdebug ">= ", $_, "\n" foreach split /\n/, $u; + print U $u; + printdebug ">\$\n"; + close U or failedcmd @upd_cmd; } sub cmd_gbp2debrebase () { |