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
This commit is contained in:
@ -79,6 +79,9 @@ OPTIONS
|
|||||||
--max-depth <depth>::
|
--max-depth <depth>::
|
||||||
For each <pathspec> given on command line, descend at most <depth>
|
For each <pathspec> given on command line, descend at most <depth>
|
||||||
levels of directories. A negative value means no limit.
|
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::
|
-w::
|
||||||
--word-regexp::
|
--word-regexp::
|
||||||
|
@ -469,6 +469,8 @@ static int diff_cache(struct rev_info *revs,
|
|||||||
opts.src_index = &the_index;
|
opts.src_index = &the_index;
|
||||||
opts.dst_index = NULL;
|
opts.dst_index = NULL;
|
||||||
opts.pathspec = &revs->diffopt.pathspec;
|
opts.pathspec = &revs->diffopt.pathspec;
|
||||||
|
opts.pathspec->recursive = 1;
|
||||||
|
opts.pathspec->max_depth = -1;
|
||||||
|
|
||||||
init_tree_desc(&t, tree->buffer, tree->size);
|
init_tree_desc(&t, tree->buffer, tree->size);
|
||||||
return unpack_trees(1, &t, &opts);
|
return unpack_trees(1, &t, &opts);
|
||||||
|
@ -47,6 +47,14 @@ test_expect_success \
|
|||||||
'git diff-index --cached $tree -- path1/ >current &&
|
'git diff-index --cached $tree -- path1/ >current &&
|
||||||
compare_diff_raw current expected'
|
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
|
cat >expected <<\EOF
|
||||||
:100644 100644 766498d93a4b06057a8e49d23f4068f1170ff38f 0a41e115ab61be0328a19b29f18cdcb49338d516 M file0
|
:100644 100644 766498d93a4b06057a8e49d23f4068f1170ff38f 0a41e115ab61be0328a19b29f18cdcb49338d516 M file0
|
||||||
EOF
|
EOF
|
||||||
|
@ -661,6 +661,9 @@ match_wildcards:
|
|||||||
/*
|
/*
|
||||||
* Match all directories. We'll try to match files
|
* Match all directories. We'll try to match files
|
||||||
* later on.
|
* 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))
|
if (ps->recursive && S_ISDIR(entry->mode))
|
||||||
return entry_interesting;
|
return entry_interesting;
|
||||||
|
Reference in New Issue
Block a user