Browse Source

grep: fix worktree setup

Unless used with --cached or grepping on a tree, "git grep" will
search on working directory, so set up worktree properly

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Nguyễn Thái Ngọc Duy 17 years ago committed by Junio C Hamano
parent
commit
6577f542b3
  1. 5
      builtin-grep.c
  2. 5
      t/t1501-worktree.sh

5
builtin-grep.c

@ -783,8 +783,11 @@ int cmd_grep(int argc, const char **argv, const char *prefix) @@ -783,8 +783,11 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
paths[1] = NULL;
}

if (!list.nr)
if (!list.nr) {
if (!cached)
setup_work_tree();
return !grep_cache(&opt, paths, cached);
}

if (cached)
die("both --cached and trees are given.");

5
t/t1501-worktree.sh

@ -169,4 +169,9 @@ test_expect_success 'git diff' ' @@ -169,4 +169,9 @@ test_expect_success 'git diff' '
test_cmp diff-FILES.expected result
'

test_expect_success 'git grep' '
(cd repo.git/work/sub &&
GIT_DIR=../.. GIT_WORK_TREE=.. git grep -l changed | grep -q dir/tracked)
'

test_done

Loading…
Cancel
Save