summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-11-04 10:28:53 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-11-04 10:35:17 (GMT)
commit6f9f3b263b1c86889d6fae0d50c75be0f3227003 (patch)
tree542e1318c6b7357d3b921c44a5197b9a88ac25f5
parentba158a32b9e237912ebe7dfe7bd56e2c531cb062 (diff)
downloadgit-6f9f3b263b1c86889d6fae0d50c75be0f3227003.zip
git-6f9f3b263b1c86889d6fae0d50c75be0f3227003.tar.gz
git-6f9f3b263b1c86889d6fae0d50c75be0f3227003.tar.bz2
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: Junio C Hamano <junkio@cox.net>
-rw-r--r--builtin-apply.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/builtin-apply.c b/builtin-apply.c
index 11a5277..f70ee98 100644
--- a/builtin-apply.c
+++ b/builtin-apply.c
@@ -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)