diff options
author | Phillip Wood <phillip.wood@dunelm.org.uk> | 2019-06-12 11:25:27 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-06-13 19:00:30 +0200 |
commit | 2bd69b9024c8c7c1b77060e3ed996c74b4775b01 (patch) | |
tree | 7934b95217df177127b0167fd5912530403bfa0f /git-add--interactive.perl | |
parent | add -p: fix counting empty context lines in edited patches (diff) | |
download | git-2bd69b9024c8c7c1b77060e3ed996c74b4775b01.tar.xz git-2bd69b9024c8c7c1b77060e3ed996c74b4775b01.zip |
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>
Diffstat (limited to 'git-add--interactive.perl')
-rwxr-xr-x | git-add--interactive.perl | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/git-add--interactive.perl b/git-add--interactive.perl index 8361ef45e7..85d0dc1196 100755 --- a/git-add--interactive.perl +++ b/git-add--interactive.perl @@ -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); } |