mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
add -p: fix checkout -p with pathological context
Commit fecc6f3a68
("add -p: adjust offsets of subsequent hunks when one is
skipped", 2018-03-01) fixed adding hunks in the correct place when a
previous hunk has been skipped. However it did not address patches that
are applied in reverse. In that case we need to adjust the pre-image
offset so that when apply reverses the patch the post-image offset is
adjusted correctly. We subtract rather than add the delta as the patch
is reversed (the easiest way to think about it is to consider a hunk of
deletions that is skipped - in that case we want to reduce offset so we
need to subtract).
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
f4d35a6b49
commit
2bd69b9024
|
@ -957,7 +957,11 @@ sub coalesce_overlapping_hunks {
|
|||
next;
|
||||
}
|
||||
if ($ofs_delta) {
|
||||
$n_ofs += $ofs_delta;
|
||||
if ($patch_mode_flavour{IS_REVERSE}) {
|
||||
$o_ofs -= $ofs_delta;
|
||||
} else {
|
||||
$n_ofs += $ofs_delta;
|
||||
}
|
||||
$_->{TEXT}->[0] = format_hunk_header($o_ofs, $o_cnt,
|
||||
$n_ofs, $n_cnt);
|
||||
}
|
||||
|
|
|
@ -571,4 +571,12 @@ test_expect_success 'add -p patch editing works with pathological context lines'
|
|||
test_cmp expected-2 actual
|
||||
'
|
||||
|
||||
test_expect_success 'checkout -p works with pathological context lines' '
|
||||
test_write_lines a a a a a a >a &&
|
||||
git add a &&
|
||||
test_write_lines a b a b a b a b a b a > a&&
|
||||
test_write_lines s n n y q | git checkout -p &&
|
||||
test_write_lines a b a b a a b a b a >expect &&
|
||||
test_cmp expect a
|
||||
'
|
||||
test_done
|
||||
|
|
Loading…
Reference in a new issue