git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2] grep -O: Do not pass color sequences as filenames to pager

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Jul 3, 2010, 02:55 UTC
Message-ID
<20100703025506.GB20980@burratino>
In-Reply-To
<AANLkTilI0NZiDk3I850x28pr5I0sYRiPLW7HAST9sduU@mail.gmail.com>
From: Nazri Ramliy <ayiehere@gmail.com>
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>
---
Nazri Ramliy wrote:
> You'll have to set "color.grep.filename" too in order to break the two
> test cases.
Thanks.
 builtin/grep.c       |    1 +
 t/t7811-grep-open.sh |   15 +++++++++++++++
 2 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/builtin/grep.c b/builtin/grep.c
index 232cd1c..597f76b 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -1001,6 +1001,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 c110441..568a6f2 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 &&
-- 
1.7.1.1
Previous: Nazri RamliyNext: Jakub Narebski
Message 7 of 11 in “Bugfix: grep: Do not colorize output when -O is set”
  1. Bugfix: grep: Do not colorize output when -O is setNazri Ramliy, Jul 2, 2010
  2. René ScharfeJul 2, 2010
  3. Jonathan NiederJul 6, 2010
  4. René ScharfeJul 6, 2010
  5. Jonathan NiederJul 2, 2010
  6. Nazri RamliyJul 3, 2010
  7. grep -O: Do not pass color sequences as filenames to pagerJonathan Nieder, Jul 3, 2010
  8. Jakub NarebskiJul 3, 2010
  9. t/README: document more test helpersJonathan Nieder, Jul 6, 2010
  10. Ævar Arnfjörð BjarmasonJul 6, 2010
  11. Junio C HamanoJul 7, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.