diff options
| author | Junio C Hamano <gitster@pobox.com> | 2019-07-29 12:38:22 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2019-07-29 12:38:22 -0700 |
| commit | 689204ca8862a25be7bd7f91a42fbdf46cfb2a56 (patch) | |
| tree | 3e889b66f7d0b4d43ceb072e17ac527807d5ac67 | |
| parent | Merge branch 'rs/avoid-overflow-in-midpoint-computation' into maint (diff) | |
| parent | add -p: fix checkout -p with pathological context (diff) | |
| download | git-689204ca8862a25be7bd7f91a42fbdf46cfb2a56.tar.gz git-689204ca8862a25be7bd7f91a42fbdf46cfb2a56.zip | |
Merge branch 'pw/add-p-recount' into maint
"git checkout -p" needs to selectively apply a patch in reverse,
which did not work well.
* pw/add-p-recount:
add -p: fix checkout -p with pathological context
| -rwxr-xr-x | git-add--interactive.perl | 6 | ||||
| -rwxr-xr-x | t/t3701-add-interactive.sh | 8 |
2 files changed, 13 insertions, 1 deletions
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 |
