git-apply: require -p<n> when working in a subdirectory.
authorJunio C Hamano <junkio@cox.net>
Tue, 20 Feb 2007 01:57:29 +0000 (17:57 -0800)
committerJunio C Hamano <junkio@cox.net>
Tue, 20 Feb 2007 02:44:59 +0000 (18:44 -0800)
commit56185f49d03cae28048146e902089ea366c6cd6c
tree93fccbc9ac5e8c80f731d2303c2522ea2fe6dd1a
parentaea1945744214bf84908586af8be1c098a6f346d
git-apply: require -p<n> when working in a subdirectory.

git-apply running inside a subdirectory, with or without --index,
used to always assume that the patch is formatted in such a way
to apply with -p1 from the toplevel, but it is more useful and
consistent with the use of "GNU patch -p1" if it defaulted to
assume that its input is meant to apply at the level it is
invoked in.

This changes the behaviour.  It used to be that the patch
generated this way would apply without any trick:

edit Documentation/Makefile
git diff >patch.file
cd Documentation
git apply ../patch.file

You need to give an explicit -p2 to git-apply now.  On the other
hand, if you got a patch from somebody else who did not follow
"patch is to apply from the top with -p1" convention, the input
patch would start with:

diff -u Makefile.old Makefile
--- Makefile.old
+++ Makefile

and in such a case, you can apply it with:

git apply -p0 patch.file

Signed-off-by: Junio C Hamano <junkio@cox.net>
builtin-apply.c
t/t4119-apply-config.sh