diff options
author | Phillip Wood <phillip.wood@dunelm.org.uk> | 2018-08-15 10:39:35 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-08-16 08:54:50 -0700 |
commit | bc9238bb0910f6d21e021e5c3061bf2124c3a176 (patch) | |
tree | 2dbaa5e5e6e7a0e5e3e4be774d210df7713b6358 /t/t3701-add-interactive.sh | |
parent | t3430: add conflicting commit (diff) | |
download | tgif-bc9238bb0910f6d21e021e5c3061bf2124c3a176.tar.xz |
rebase -i: fix SIGSEGV when 'merge <branch>' fails
If a merge command in the todo list specifies just a branch to merge
with no -C/-c argument then item->commit is NULL. This means that if
there are merge conflicts error_with_patch() is passed a NULL commit
which causes a segmentation fault when make_patch() tries to look it up.
This commit implements a minimal fix which fixes the crash and allows
the user to successfully commit a conflict resolution with 'git rebase
--continue'. It does not write .git/rebase-merge/patch,
.git/rebase-merge/stopped-sha or update REBASE_HEAD. To sensibly get the
hashes of the merge parents would require refactoring do_merge() to
extract the code that parses the merge parents into a separate function
which error_with_patch() could then use to write the parents into the
stopped-sha file. To create meaningful output make_patch() and 'git
rebase --show-current-patch' would also need to be modified to diff the
merge parent and merge base in this case.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t3701-add-interactive.sh')
0 files changed, 0 insertions, 0 deletions