Re: [PATCH] Fix git-apply with -p greater than 1
- From
Federico Cuello <fedux@lugmen.org.ar>
- Date
- Oct 22, 2010, 18:51 UTC
- Message-ID
- <4CC1DD20.1080500@lugmen.org.ar>
- In-Reply-To
- <7v8w1qm5n2.fsf@alter.siamese.dyndns.org>
El 22/10/10 15:41, Junio C Hamano escribió:
Show 5 quoted lines
> Fede <fedux@lugmen.org.ar> writes: > >> There is a similar issue with renames and I'm working on that. > I think I queued a fix-up in 'pu' on top of your patch last night. Does > it work for you?
Yes, is almost what I got. I also checked p_value not to be 0.
Anyway, the whole thing is broken when -p 0 , and it requires a little bit more work. Specially in apply.c:stop_at_slash().
I have this:
diff --git a/builtin/apply.c b/builtin/apply.c index 14996f8..3197e38 100644 --- a/builtin/apply.c +++ b/builtin/apply.c @@ -919,28 +919,28 @@ static int gitdiff_newfile(const char *line, struct patch *patch) static int gitdiff_copysrc(const char *line, struct patch *patch) { patch->is_copy = 1; - patch->old_name = find_name(line, NULL, 0, 0); + patch->old_name = find_name(line, NULL, p_value ? p_value - 1 : 0, 0); return 0; } static int gitdiff_copydst(const char *line, struct patch *patch) { patch->is_copy = 1; - patch->new_name = find_name(line, NULL, 0, 0); + patch->new_name = find_name(line, NULL, p_value ? p_value - 1 : 0, 0); return 0; } static int gitdiff_renamesrc(const char *line, struct patch *patch) { patch->is_rename = 1; - patch->old_name = find_name(line, NULL, 0, 0); + patch->old_name = find_name(line, NULL, p_value ? p_value - 1 : 0, 0); return 0; } static int gitdiff_renamedst(const char *line, struct patch *patch) { patch->is_rename = 1; - patch->new_name = find_name(line, NULL, 0, 0); + patch->new_name = find_name(line, NULL, p_value ? p_value - 1 : 0, 0); return 0; }