summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNazri Ramliy <ayiehere@gmail.com>2010-07-02 21:55:06 -0500
committerJunio C Hamano <gitster@pobox.com>2010-07-07 11:23:17 -0700
commite7b082a4118d15e901f4f44b067394b314a0ae6a (patch)
tree22810e66783e5de49f82b49e076852539ce13dd5
parent0c72cead8435b2865efc884060bd0bd49313cbd5 (diff)
downloadgit-e7b082a4118d15e901f4f44b067394b314a0ae6a.tar.gz
grep -O: Do not pass color sequences as filenames to pager
With a .gitconfig like this: [color] ui = auto [color "grep"] filename = magenta if stdout is a terminal, the grep machinery will output the color sequence \e[36m before each filename in its output. In the case of "git grep -O foo", output is argv for the pager. Disable color when calling the grep machinery in this case. Signed-off-by: Nazri Ramliy <ayiehere@gmail.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/grep.c1
-rwxr-xr-xt/t7811-grep-open.sh15
2 files changed, 16 insertions, 0 deletions
diff --git a/builtin/grep.c b/builtin/grep.c
index 4b8ddbe0d5..7a9427d357 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -997,6 +997,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
if (show_in_pager == default_pager)
show_in_pager = git_pager(1);
if (show_in_pager) {
+ opt.color = 0;
opt.name_only = 1;
opt.null_following_name = 1;
opt.output_priv = &path_list;
diff --git a/t/t7811-grep-open.sh b/t/t7811-grep-open.sh
index c110441344..568a6f2b69 100755
--- a/t/t7811-grep-open.sh
+++ b/t/t7811-grep-open.sh
@@ -125,6 +125,21 @@ test_expect_success 'modified file' '
test_cmp empty out
'
+test_config() {
+ git config "$1" "$2" &&
+ test_when_finished "git config --unset $1"
+}
+
+test_expect_success 'copes with color settings' '
+ rm -f actual &&
+ echo grep.h >expect &&
+ test_config color.grep always &&
+ test_config color.grep.filename yellow &&
+ test_config color.grep.separator green &&
+ git grep -O'\''printf "%s\n" >actual'\'' GREP_AND &&
+ test_cmp expect actual
+'
+
test_expect_success 'run from subdir' '
rm -f actual &&
echo grep.c >expect &&