On Sat, Mar 05, 2016 at 11:31:53AM -0800, Junio C Hamano wrote:
> "brian m. carlson" <sand...@crustytoothpaste.net> 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 <jun...@cox.net>
> 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 <jun...@cox.net>
> 
> 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

Reply via email to