When a hunk was split before being edited manually, it does not apply anymore cleanly. Apply coalesce_overlapping_hunks() first to make it work. Enable test for it as well. Signed-off-by: Jochen Sprickerhof <git@xxxxxxxxxxxxxxxxxxxxx> --- git-add--interactive.perl | 8 ++++---- t/t3701-add-interactive.sh | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/git-add--interactive.perl b/git-add--interactive.perl index 36f38ced9..c9f434e4a 100755 --- a/git-add--interactive.perl +++ b/git-add--interactive.perl @@ -1195,10 +1195,10 @@ sub edit_hunk_loop { # delta from the original unedited hunk. $hunk->{OFS_DELTA} and $newhunk->{OFS_DELTA} += $hunk->{OFS_DELTA}; - if (diff_applies($head, - @{$hunks}[0..$ix-1], - $newhunk, - @{$hunks}[$ix+1..$#{$hunks}])) { + my @hunk = @{$hunks}; + splice (@hunk, $ix, 1, $newhunk); + @hunk = coalesce_overlapping_hunks(@hunk); + if (diff_applies($head, @hunk)) { $newhunk->{DISPLAY} = [color_diff(@{$newtext})]; return $newhunk; } diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh index b170fb02b..b04806ad7 100755 --- a/t/t3701-add-interactive.sh +++ b/t/t3701-add-interactive.sh @@ -348,7 +348,7 @@ test_expect_success 'split hunk "add -p (edit)"' ' ! grep "^+15" actual ' -test_expect_failure 'split hunk "add -p (no, yes, edit)"' ' +test_expect_success 'split hunk "add -p (no, yes, edit)"' ' test_write_lines 5 10 20 21 30 31 40 50 60 >test && git reset && # test sequence is s(plit), n(o), y(es), e(dit) -- 2.18.0