@matheusbsbs / matheus-bagliano / commits / 5f7c643afe
Fork 0

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