While working inside a deep subdirectory, it sometimes is necessary to find a string you see in a file you are working on from the files in the entire project. This is especially true when you are dipping your toe into an unfamiliar project. By default, "git grep" limits its search space to the current directory and below (i.e. as if "-r ." is specified), and it is rather cumbersome to repeat ../ as many times as necessary. This new option tells "git grep" not to limit the search space to the current directory. Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> --- * In http://article.gmane.org/gmane.comp.version-control.git/111717, I once argued in the opposite way, but I think it is Ok to aim for making the default --full-tree in the longer run (cf. $gmane/127885). This is the first step in that direction. I am not sure if there can be a sane way to flip the default without hurting existing scripts and users. Backward compatibility always is a pain. builtin-grep.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/builtin-grep.c b/builtin-grep.c index 761799d..5787f35 100644 --- a/builtin-grep.c +++ b/builtin-grep.c @@ -693,6 +693,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix) { int hit = 0; int cached = 0; + int full_tree = 0; int external_grep_allowed = 1; int seen_dashdash = 0; struct grep_opt opt; @@ -732,6 +733,8 @@ int cmd_grep(int argc, const char **argv, const char *prefix) OPT_BIT('H', NULL, &opt.pathname, "show filenames", 1), OPT_NEGBIT(0, "full-name", &opt.relative, "show filenames relative to top directory", 1), + OPT_BIT(0, "full-tree", &full_tree, + "search from the top of the tree", 1), OPT_BOOLEAN('l', "files-with-matches", &opt.name_only, "show only filenames instead of matching lines"), OPT_BOOLEAN(0, "name-only", &opt.name_only, @@ -862,7 +865,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix) if (i < argc) paths = get_pathspec(prefix, argv + i); - else if (prefix) { + else if (prefix && !full_tree) { paths = xcalloc(2, sizeof(const char *)); paths[0] = prefix; paths[1] = NULL; -- 1.6.6.rc0.47.g1fdffa.dirty -- 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