diff options
author | Nazri Ramliy <ayiehere@gmail.com> | 2010-07-02 21:55:06 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-07-07 11:23:17 -0700 |
commit | e7b082a4118d15e901f4f44b067394b314a0ae6a (patch) | |
tree | 22810e66783e5de49f82b49e076852539ce13dd5 | |
parent | 0c72cead8435b2865efc884060bd0bd49313cbd5 (diff) | |
download | git-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.c | 1 | ||||
-rwxr-xr-x | t/t7811-grep-open.sh | 15 |
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 && |