зеркало из https://github.com/microsoft/git.git
grep: load funcname patterns for -W
git-grep avoids loading the funcname patterns unless they are needed.
ba8ea74
(grep: add option to show whole function as context,
2011-08-01) forgot to extend this test also to the new funcbody
feature. Do so.
The catch is that we also have to disable threading when using
userdiff, as explained in grep_threads_ok(). So we must be careful to
introduce the same test there.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
9859a023fe
Коммит
b8ffedca6f
7
grep.c
7
grep.c
|
@ -948,8 +948,8 @@ int grep_threads_ok(const struct grep_opt *opt)
|
|||
* machinery in grep_buffer_1. The attribute code is not
|
||||
* thread safe, so we disable the use of threads.
|
||||
*/
|
||||
if (opt->funcname && !opt->unmatch_name_only && !opt->status_only &&
|
||||
!opt->name_only)
|
||||
if ((opt->funcname || opt->funcbody)
|
||||
&& !opt->unmatch_name_only && !opt->status_only && !opt->name_only)
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
|
@ -1008,7 +1008,8 @@ static int grep_buffer_1(struct grep_opt *opt, const char *name,
|
|||
}
|
||||
|
||||
memset(&xecfg, 0, sizeof(xecfg));
|
||||
if (opt->funcname && !opt->unmatch_name_only && !opt->status_only &&
|
||||
if ((opt->funcname || opt->funcbody)
|
||||
&& !opt->unmatch_name_only && !opt->status_only &&
|
||||
!opt->name_only && !binary_match_only && !collect_hits) {
|
||||
struct userdiff_driver *drv = userdiff_find_by_path(name);
|
||||
if (drv && drv->funcname.pattern) {
|
||||
|
|
|
@ -523,6 +523,20 @@ test_expect_success 'grep -W' '
|
|||
test_cmp expected actual
|
||||
'
|
||||
|
||||
cat >expected <<EOF
|
||||
hello.c= printf("Hello world.\n");
|
||||
hello.c: return 0;
|
||||
hello.c- /* char ?? */
|
||||
EOF
|
||||
|
||||
test_expect_success 'grep -W with userdiff' '
|
||||
test_when_finished "rm -f .gitattributes" &&
|
||||
git config diff.custom.xfuncname "(printf.*|})$" &&
|
||||
echo "hello.c diff=custom" >.gitattributes &&
|
||||
git grep -W return >actual &&
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'grep from a subdirectory to search wider area (1)' '
|
||||
mkdir -p s &&
|
||||
(
|
||||
|
|
Загрузка…
Ссылка в новой задаче