зеркало из https://github.com/microsoft/git.git
apply --allow-overlap: fix a corner case
Yes, yes, this is supposed to be only a band-aid option for `git add -p` not Doing The Right Thing. But as long as we carry the `--allow-overlap` option, we might just as well get it right. This fixes the case where one hunk inserts a line before the first line, and is followed by a hunk whose context overlaps with the first one's and which appends a line at the end. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
89c8559367
Коммит
b4bbbbd5a2
10
apply.c
10
apply.c
|
@ -2661,6 +2661,16 @@ static int find_pos(struct apply_state *state,
|
|||
unsigned long backwards, forwards, current;
|
||||
int backwards_lno, forwards_lno, current_lno;
|
||||
|
||||
/*
|
||||
* When running with --allow-overlap, it is possible that a hunk is
|
||||
* seen that pretends to start at the beginning (but no longer does),
|
||||
* and that *still* needs to match the end. So trust `match_end` more
|
||||
* than `match_beginning`.
|
||||
*/
|
||||
if (state->allow_overlap && match_beginning && match_end &&
|
||||
img->nr - preimage->nr != 0)
|
||||
match_beginning = 0;
|
||||
|
||||
/*
|
||||
* If match_beginning or match_end is specified, there is no
|
||||
* point starting from a wrong line that will never match and
|
||||
|
|
Загрузка…
Ссылка в новой задаче