add NO_EXTERNAL_GREP build option
Previously, we just chose whether to allow external grep based on the __unix__ define. However, there are systems which define this macro but which have an inferior group (e.g., one that does not support all options used by t7002). This allows users to accept the potential speed penalty to get a more consistent grep experience (and to pass the testsuite). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King committed
Mar 12, 2008 at 17:39 UTC
5f7c643afe8da21c82762f872632d6407530f9e8
2 files changed
+16
-2
Makefile
+6
@@ -148,6 +148,9 @@ all::
148
# is a simplified version of the merge sort used in glibc. This is
149
# recommended if Git triggers O(n^2) behavior in your platform's qsort().
150
#
151
+# Define NO_EXTERNAL_GREP if you don't want "git grep" to ever call
152
+# your external grep (e.g., if your system lacks grep, if its grep is
153
+# broken, or spawning external process is slower than built-in grep git has).
154
155
GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
156
@$(SHELL_PATH) ./GIT-VERSION-GEN
@@ -760,6 +763,9 @@ endif
763
ifdef DIR_HAS_BSD_GROUP_SEMANTICS
764
COMPAT_CFLAGS += -DDIR_HAS_BSD_GROUP_SEMANTICS
765
endif
766
+ifdef NO_EXTERNAL_GREP
767
+ BASIC_CFLAGS += -DNO_EXTERNAL_GREP
768
+endif
769
770
ifeq ($(TCLTK_PATH),)
771
NO_TCLTK=NoThanks
builtin-grep.c
+10
-2
@@ -12,6 +12,14 @@
12
#include "builtin.h"
13
#include "grep.h"
14
15
+#ifndef NO_EXTERNAL_GREP
16
+#ifdef __unix__
17
+#define NO_EXTERNAL_GREP 0
18
+#else
19
+#define NO_EXTERNAL_GREP 1
20
+#endif
21
+#endif
22
+
23
/*
24
* git grep pathspecs are somewhat different from diff-tree pathspecs;
25
* pathname wildcards are allowed.
@@ -153,7 +161,7 @@ static int grep_file(struct grep_opt *opt, const char *filename)
161
return i;
162
}
163
156
-#ifdef __unix__
164
+#if !NO_EXTERNAL_GREP
165
static int exec_grep(int argc, const char **argv)
166
{
167
pid_t pid;
@@ -372,7 +380,7 @@ static int grep_cache(struct grep_opt *opt, const char **paths, int cached)
380
int nr;
381
read_cache();
382
375
-#ifdef __unix__
383
+#if !NO_EXTERNAL_GREP
384
/*
385
* Use the external "grep" command for the case where
386
* we grep through the checked-out files. It tends to