From: Junio C Hamano <gitster@pobox.com>
To: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Cc: git@vger.kernel.org, sbeller@google.com,
mehul.jain2029@gmail.com, sandals@crustytoothpaste.net
Subject: Re: git-apply does not work in a sub-directory of a Git repository
Date: Thu, 24 Mar 2016 10:32:35 -0700 [thread overview]
Message-ID: <xmqqtwjv93yk.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <xmqq8u17akgn.fsf@gitster.mtv.corp.google.com> (Junio C. Hamano's message of "Thu, 24 Mar 2016 09:50:48 -0700")
Junio C Hamano <gitster@pobox.com> writes:
> So a better alternative may be to conditionally disable the "Paths
> outside are not touched regardless of --include" logic, i.e. we
> exclude paths outside by default just as before, but if there is at
> least one explicit "--include" given, we skip this "return 0".
>
> That way, we do not have to commit to turning --include/--exclude to
> pathspec (which I agree is a huge change in behaviour that may not
> be a good idea) and we do not have to add "--full-tree" that is only
> understood by "apply" but not other commands that operate on the
> current directory by default.
And the necessary change to do so may look like this. With this:
$ git show >P
$ git reset --hard HEAD^
$ cd t
$ git apply -v ../P
$ git apply -v --include=\* ../P
seem to work as expected.
diff --git a/builtin/apply.c b/builtin/apply.c
index c993333..1af3f7e 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -1955,8 +1955,8 @@ static int use_patch(struct patch *p)
const char *pathname = p->new_name ? p->new_name : p->old_name;
int i;
- /* Paths outside are not touched regardless of "--include" */
- if (0 < prefix_length) {
+ /* Paths outside are not touched when there is no explicit "--include" */
+ if (!has_include && 0 < prefix_length) {
int pathlen = strlen(pathname);
if (pathlen <= prefix_length ||
memcmp(prefix, pathname, prefix_length))
next prev parent reply other threads:[~2016-03-24 17:32 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-22 12:10 git-apply does not work in a sub-directory of a Git repository Mehul Jain
2016-03-22 22:14 ` Stefan Beller
2016-03-23 10:15 ` Duy Nguyen
2016-03-23 15:21 ` Junio C Hamano
2016-03-23 16:55 ` Junio C Hamano
2016-03-24 10:49 ` Duy Nguyen
2016-03-24 11:56 ` Nguyễn Thái Ngọc Duy
2016-03-24 11:56 ` [PATCH 1/4] git-apply.txt: remove a space Nguyễn Thái Ngọc Duy
2016-03-24 11:56 ` [PATCH 2/4] git-apply.txt: mention the behavior inside a subdir Nguyễn Thái Ngọc Duy
2016-03-24 11:56 ` [PATCH 3/4] apply: add --whole to apply git patch without prefix filtering Nguyễn Thái Ngọc Duy
2016-03-24 11:56 ` [PATCH 4/4] apply: report patch skipping in verbose mode Nguyễn Thái Ngọc Duy
2016-03-24 16:50 ` git-apply does not work in a sub-directory of a Git repository Junio C Hamano
2016-03-24 17:32 ` Junio C Hamano [this message]
2016-03-30 1:05 ` Duy Nguyen
2016-03-30 17:13 ` Junio C Hamano
2016-03-30 9:33 ` Duy Nguyen
2016-03-24 16:29 ` Junio C Hamano
2016-03-23 17:24 ` Mehul Jain
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqtwjv93yk.fsf@gitster.mtv.corp.google.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=mehul.jain2029@gmail.com \
--cc=pclouds@gmail.com \
--cc=sandals@crustytoothpaste.net \
--cc=sbeller@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.