+Brian who also had issues with git-apply. On Thu, Mar 24, 2016 at 5:49 PM, Duy Nguyen <pclouds@xxxxxxxxx> wrote: > On Wed, Mar 23, 2016 at 11:55 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: >> Junio C Hamano <gitster@xxxxxxxxx> writes: >> >>> See >>> >>> http://thread.gmane.org/gmane.comp.version-control.git/288316/focus=288321 >>> >>> I agree it is bad that it silently ignores the path outside the >>> directory. When run with --verbose, we should say "Skipped X that >>> is outside the directory." or something like that, just like we >>> issue notices when we applied with offset, etc. Implemented in [04/04] apply: report patch skipping in verbose mode. >> Another thing we may want to do is to loosen (or redo) the logic >> in builtin/apply.c::use_patch() >> >> 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) { >> int pathlen = strlen(pathname); >> if (pathlen <= prefix_length || >> memcmp(prefix, pathname, prefix_length)) >> return 0; >> } >> >> The include/exclude mechanism does use wildmatch() but does not use >> the pathspec mechanism (it predates the pathspec machinery that was >> made reusable in places like this). We should be able to >> >> $ cd d/e/e/p/d/i/r >> $ git apply --include=:/ ../../../../../../../patch >> >> to lift this limitation. IOW, we can think of the use_patch() to >> include only the paths in the subdirectory we are in by default, but >> we can make it allow --include/--exclude command line option to >> override that default. I went with a new option instead of changing --include. Making it pathspec can still bite people. And pathspec is not exactly compatible with wildmatch either. This is in [03/04] apply: add --whole to apply git patch without prefix filtering > git-apply.txt should > probably mention about this because (at least to me) it sounds more > naturally that if I give a patch, git-apply should apply the whole > patch. [02/04] git-apply.txt: mention the behavior inside a subdir > We probably should show a warning if everything file is filtered out > too because silence usually means "good" from a typical unix command. > It could be guarded with advice config key, and should only show if it > looks like there are matching paths on worktree, but filtered out. I'm holding this back. Too much heuristics. -- Duy -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html