diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-01-18 15:16:43 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-01-18 15:16:43 -0800 |
commit | c74f97a624f6a79767d2e2d55d98bab5e2b02f16 (patch) | |
tree | 4a28f82f00c00afba38a89c51452652ffc9a5a7d | |
parent | 8ef7933880e6134f51d7bb5d7566b31ca93ee8c7 (diff) | |
parent | 4838237cb73a13d38a7e4348b71be96b60eed21e (diff) | |
download | git-c74f97a624f6a79767d2e2d55d98bab5e2b02f16.tar.gz |
Merge branch 'nd/pathspec-recursion-cleanup'
* nd/pathspec-recursion-cleanup:
diff-index: enable recursive pathspec matching in unpack_trees
Document limited recursion pathspec matching with wildcards
-rw-r--r-- | Documentation/git-grep.txt | 3 | ||||
-rw-r--r-- | diff-lib.c | 2 | ||||
-rwxr-xr-x | t/t4010-diff-pathspec.sh | 8 | ||||
-rw-r--r-- | tree-walk.c | 3 |
4 files changed, 16 insertions, 0 deletions
diff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt index 15d6711d46..6a8b1e3a7d 100644 --- a/Documentation/git-grep.txt +++ b/Documentation/git-grep.txt @@ -79,6 +79,9 @@ OPTIONS --max-depth <depth>:: For each <pathspec> given on command line, descend at most <depth> levels of directories. A negative value means no limit. + This option is ignored if <pathspec> contains active wildcards. + In other words if "a*" matches a directory named "a*", + "*" is matched literally so --max-depth is still effective. -w:: --word-regexp:: diff --git a/diff-lib.c b/diff-lib.c index 62f4cd94cf..fc0dff31b5 100644 --- a/diff-lib.c +++ b/diff-lib.c @@ -469,6 +469,8 @@ static int diff_cache(struct rev_info *revs, opts.src_index = &the_index; opts.dst_index = NULL; opts.pathspec = &revs->diffopt.pathspec; + opts.pathspec->recursive = 1; + opts.pathspec->max_depth = -1; init_tree_desc(&t, tree->buffer, tree->size); return unpack_trees(1, &t, &opts); diff --git a/t/t4010-diff-pathspec.sh b/t/t4010-diff-pathspec.sh index fbc8cd8f05..af5134b70c 100755 --- a/t/t4010-diff-pathspec.sh +++ b/t/t4010-diff-pathspec.sh @@ -48,6 +48,14 @@ test_expect_success \ compare_diff_raw current expected' cat >expected <<\EOF +:100644 100644 766498d93a4b06057a8e49d23f4068f1170ff38f 0a41e115ab61be0328a19b29f18cdcb49338d516 M path1/file1 +EOF +test_expect_success \ + '"*file1" should show path1/file1' \ + 'git diff-index --cached $tree -- "*file1" >current && + compare_diff_raw current expected' + +cat >expected <<\EOF :100644 100644 766498d93a4b06057a8e49d23f4068f1170ff38f 0a41e115ab61be0328a19b29f18cdcb49338d516 M file0 EOF test_expect_success \ diff --git a/tree-walk.c b/tree-walk.c index f82dba6a1f..492c7cd744 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -661,6 +661,9 @@ match_wildcards: /* * Match all directories. We'll try to match files * later on. + * max_depth is ignored but we may consider support it + * in future, see + * http://thread.gmane.org/gmane.comp.version-control.git/163757/focus=163840 */ if (ps->recursive && S_ISDIR(entry->mode)) return entry_interesting; |