* [PATCH 0/1] add -p: fix checkout -p with pathological context
@ 2019-06-12 9:25 Phillip Wood via GitGitGadget
2019-06-12 9:25 ` [PATCH 1/1] " Phillip Wood via GitGitGadget
0 siblings, 1 reply; 2+ messages in thread
From: Phillip Wood via GitGitGadget @ 2019-06-12 9:25 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano
When I fixed the hunk offsets in add -p when hunks are skipped I forgot that
the reverse patch case needs to be handled differently.
Phillip Wood (1):
add -p: fix checkout -p with pathological context
git-add--interactive.perl | 6 +++++-
t/t3701-add-interactive.sh | 8 ++++++++
2 files changed, 13 insertions(+), 1 deletion(-)
base-commit: aeb582a98374c094361cba1bd756dc6307432c42
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-262%2Fphillipwood%2Fwip%2Ffix-checkout-p-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-262/phillipwood/wip/fix-checkout-p-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/262
--
gitgitgadget
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH 1/1] add -p: fix checkout -p with pathological context
2019-06-12 9:25 [PATCH 0/1] add -p: fix checkout -p with pathological context Phillip Wood via GitGitGadget
@ 2019-06-12 9:25 ` Phillip Wood via GitGitGadget
0 siblings, 0 replies; 2+ messages in thread
From: Phillip Wood via GitGitGadget @ 2019-06-12 9:25 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Phillip Wood
From: Phillip Wood <phillip.wood@dunelm.org.uk>
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>
---
git-add--interactive.perl | 6 +++++-
t/t3701-add-interactive.sh | 8 ++++++++
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index 20eb81cc92..da5b4ec4bc 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -972,7 +972,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);
}
diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
index 65dfbc033a..69991a3168 100755
--- a/t/t3701-add-interactive.sh
+++ b/t/t3701-add-interactive.sh
@@ -639,4 +639,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
--
gitgitgadget
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-06-12 9:25 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-12 9:25 [PATCH 0/1] add -p: fix checkout -p with pathological context Phillip Wood via GitGitGadget
2019-06-12 9:25 ` [PATCH 1/1] " Phillip Wood via GitGitGadget
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.