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. 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. That way, the plain-vanilla use would still retain the "when working in subdirectory, we only touch that subdirectory" behaviour, which existing scripts may depend on, but users can loosen the default as necessary. -- 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