Merge branch 'pw/add-p-recount'

"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
This commit is contained in:
Junio C Hamano 2019-07-09 15:25:37 -07:00
commit 1b074e15d0
2 changed files with 13 additions and 1 deletions

View file

@ -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);
}

View file

@ -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