Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
---
dir.c | 8 +++++---
t/t7002-grep.sh | 24 ++++++++++++++++++++++++
2 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/dir.c b/dir.c
index 133c333..fee19fe 100644
--- a/dir.c
+++ b/dir.c
@@ -1024,9 +1024,11 @@ void setup_standard_excludes(struct dir_struct *dir)
const char *path;
dir->exclude_per_dir = ".gitignore";
- path = git_path("info/exclude");
- if (!access(path, R_OK))
- add_excludes_from_file(dir, path);
+ if (!startup_info || startup_info->have_repository) {
+ path = git_path("info/exclude");
+ if (!access(path, R_OK))
+ add_excludes_from_file(dir, path);
+ }
if (excludes_file && !access(excludes_file, R_OK))
add_excludes_from_file(dir, excludes_file);
}diff --git a/t/t7002-grep.sh b/t/t7002-grep.sh
index e249c3e..06ec4cb 100755
--- a/t/t7002-grep.sh
+++ b/t/t7002-grep.sh
@@ -527,4 +527,28 @@ test_expect_success 'grep -e -- -- path' '
test_cmp expected actual
'
+test_expect_success 'Setup fake .git' '
+ cd t &&
+ GIT_CEILING_DIRECTORIES="`pwd`" &&
+ export GIT_CEILING_DIRECTORIES &&
+ cd a &&
+ mkdir -p .git/info &&
+ cd ../..
+
+'
+
+test_expect_success 'Ignore fake .git/info/exclude' '
+ (
+ cd t/a &&
+ echo v > .git/info/exclude &&
+ git grep --no-index vvv . &&
+ rm .git/info/exclude
+ )
+'
+
+test_expect_success 'Unsetup fake .git' '
+ rm -rf t/a &&
+ unset GIT_CEILING_DIRECTORIES
+'
+
test_done
--
1.7.0.1.384.g6abcaa