* Making git apply always work relative to current directory
@ 2016-03-05 18:11 brian m. carlson
2016-03-05 19:31 ` Junio C Hamano
0 siblings, 1 reply; 3+ messages in thread
From: brian m. carlson @ 2016-03-05 18:11 UTC (permalink / raw)
To: git
[-- Attachment #1: Type: text/plain, Size: 1028 bytes --]
I have a piece of software which must run out of a given directory. In
development, this is a git repository, and in production it is not. I
also have an ignored subdirectory where I would like to use git apply to
apply patches (in both environments).
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*.
I have to provide a --directory argument in order for it to function
underneath the repository, but of course that doesn't work when the
directory isn't within a repository. --unsafe-paths did not seem to
make a difference. I'm using Git 2.7.2.
Is there a way to tell git apply that it should apply relative to the
current working directory, no matter what? I'm happy to send a patch to
either the documentation or git apply if necessary.
--
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 #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Making git apply always work relative to current directory
2016-03-05 18:11 Making git apply always work relative to current directory brian m. carlson
@ 2016-03-05 19:31 ` Junio C Hamano
2016-03-05 19:42 ` brian m. carlson
0 siblings, 1 reply; 3+ messages in thread
From: Junio C Hamano @ 2016-03-05 19:31 UTC (permalink / raw)
To: brian m. carlson; +Cc: git
"brian m. carlson" <sandals@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 <junkio@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 <junkio@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.
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.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Making git apply always work relative to current directory
2016-03-05 19:31 ` Junio C Hamano
@ 2016-03-05 19:42 ` brian m. carlson
0 siblings, 0 replies; 3+ messages in thread
From: brian m. carlson @ 2016-03-05 19:42 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
[-- Attachment #1: Type: text/plain, Size: 2682 bytes --]
On Sat, Mar 05, 2016 at 11:31:53AM -0800, Junio C Hamano wrote:
> "brian m. carlson" <sandals@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 <junkio@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 <junkio@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 #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-03-05 19:42 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-05 18:11 Making git apply always work relative to current directory brian m. carlson
2016-03-05 19:31 ` Junio C Hamano
2016-03-05 19:42 ` brian m. carlson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).