From: Junio C Hamano Date: Sat, 4 Nov 2006 11:54:20 +0000 (-0800) Subject: Merge branch 'maint' X-Git-Tag: v1.4.4-rc1~23 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/a622f6b35eb72b0ce738c03d6b49f760501bce78?ds=inline;hp=-c Merge branch 'maint' * maint: apply: handle "traditional" creation/deletion diff correctly. --- a622f6b35eb72b0ce738c03d6b49f760501bce78 diff --combined builtin-apply.c index 11397f5504,f70ee98e2d..db7cdce1d3 --- a/builtin-apply.c +++ b/builtin-apply.c @@@ -360,7 -360,7 +360,7 @@@ static int gitdiff_hdrend(const char *l static char *gitdiff_verify_name(const char *line, int isnull, char *orig_name, const char *oldnew) { if (!orig_name && !isnull) - return find_name(line, NULL, 1, 0); + return find_name(line, NULL, 1, TERM_TAB); if (orig_name) { int len; @@@ -370,7 -370,7 +370,7 @@@ len = strlen(name); if (isnull) die("git-apply: bad git-diff - expected /dev/null, got %s on line %d", name, linenr); - another = find_name(line, NULL, 1, 0); + another = find_name(line, NULL, 1, TERM_TAB); if (!another || memcmp(another, name, len)) die("git-apply: bad git-diff - inconsistent %s filename on line %d", oldnew, linenr); free(another); @@@ -1043,10 -1043,14 +1043,14 @@@ static int parse_single_patch(char *lin * 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)