diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2018-02-16 09:01:38 +0000 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2018-06-16 12:25:49 +0100 |
commit | e00c330eb5a8f42129fe1f2010f28b62780b0a68 (patch) | |
tree | 96a2230cd3e5defd59177970dfb76a6f5479f3f3 | |
parent | 2b440473af773ab13334f8b79537c7a3153e4e4f (diff) |
git-debrebase: stitch better
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
-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 () { |