From: Nazri Ramliy <ayiehere@xxxxxxxxx> 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@xxxxxxxxx> Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> --- 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html