summaryrefslogtreecommitdiff
path: root/git-debrebase
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2018-02-16 09:01:38 +0000
committerIan Jackson <ijackson@chiark.greenend.org.uk>2018-06-16 12:25:49 +0100
commite00c330eb5a8f42129fe1f2010f28b62780b0a68 (patch)
tree96a2230cd3e5defd59177970dfb76a6f5479f3f3 /git-debrebase
parent2b440473af773ab13334f8b79537c7a3153e4e4f (diff)
git-debrebase: stitch better
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Diffstat (limited to 'git-debrebase')
-rwxr-xr-xgit-debrebase24
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 () {