On Sat, Mar 05, 2016 at 11:31:53AM -0800, Junio C Hamano wrote: > "brian m. carlson" <sandals@xxxxxxxxxxxxxxxxxxxx> writes: > > > If I run git apply --no-index --verbose <patch>, it succeeds in both > > cases, but when I'm in the git repository, it *silently does nothing*. > > That originally sounded peculiar to me and I suspected it to be a > bug, but it looks like a designed-in feature and with us since > > commit edf2e37002eeb30a2ccad5db3b3e1fe41cdc7eb0 > Author: Junio C Hamano <junkio@xxxxxxx> > Date: Fri Nov 25 23:14:15 2005 -0800 > > git-apply: work from subdirectory. > > When applying a patch to index file, we need to know where GIT_DIR is; > use setup_git_directory() to find it out. This also allows us to work > from a subdirectory if we wanted to. > > When git-apply is run from a subdirectory, it applies the given patch > only to the files under the current directory and below. > > Signed-off-by: Junio C Hamano <junkio@xxxxxxx> > > So exclusion by use_patch() for paths outside the current directory > seems to be a feature; the log message does not say "why", but if I > have to guess, the reasoning was probably "The old world order was > that the command has to always be run from the top level. A user > who wants to run it from a subdirectory must be doing so for a > reason, e.g. 'I am currently working in this directory, do not touch > outside this area'". In any case, I suspect that the existing tooling > people built over the past 10 years around "git apply" already depends > on this behaviour, so we cannot lightly change it. I was planning to add a --here option (maybe spelled --current-directory) that would change that behavior, since I figured that people would be relying on the current behavior. The man page clearly indicates that some people are using it as a better GNU patch, so an option that does that might be useful. Regardless, I'd say that --verbose should cause git apply to say something. I'm not a newbie with Git, and I spent about an hour trying to figure this out. I've also been bitten by it before elsewhere. > Is it so hard to temporarily go up to the root, run "git apply", and > come back? You can use "--no-index --directory=trash" for both > cases that way. The existing code used patch until we realized that older versions of GNU patch can't apply certain git diffs. It's not super easy to change it, but I suppose we could. -- brian m. carlson / brian with sandals: Houston, Texas, US +1 832 623 2791 | https://www.crustytoothpaste.net/~bmc | My opinion only OpenPGP: https://keybase.io/bk2204
Attachment:
signature.asc
Description: PGP signature