提交 6f9f3b26 编写于 作者: J Junio C Hamano

apply: handle "traditional" creation/deletion diff correctly.

We deduced a GNU diff output that does not use /dev/null convention
as creation (deletion) diff correctly by looking at the lack of context
and deleted lines (added lines), but forgot to reset the new (old) name
field properly.

This was a regression when we added a workaround for --unified=0 insanity.
Signed-off-by: NJunio C Hamano <junkio@cox.net>
上级 ba158a32
......@@ -1043,10 +1043,14 @@ static int parse_single_patch(char *line, unsigned long size, struct patch *patc
* then not having oldlines means the patch is creation,
* and not having newlines means the patch is deletion.
*/
if (patch->is_new < 0 && !oldlines)
if (patch->is_new < 0 && !oldlines) {
patch->is_new = 1;
if (patch->is_delete < 0 && !newlines)
patch->old_name = NULL;
}
if (patch->is_delete < 0 && !newlines) {
patch->is_delete = 1;
patch->new_name = NULL;
}
}
if (0 < patch->is_new && oldlines)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册