提交 2e6c012e 编写于 作者: J Jeff King 提交者: Junio C Hamano

setup_pager: set GIT_PAGER_IN_USE

We have always set a global "spawned_pager" variable when we
start the pager. This lets us make the auto-color decision
later in the program as as "we are outputting to a terminal,
or to a pager which can handle colors".

Commit 6e9af863 added support for the GIT_PAGER_IN_USE
environment variable. An external program calling git (e.g.,
git-svn) could set this variable to indicate that it had
already started the pager, and that the decision about
auto-coloring should take that into account.

However, 6e9af863 failed to do the reverse, which is to tell
external programs when git itself has started the pager.
Thus a git command implemented as an external script that
has the pager turned on (e.g., "git -p stash show") would
not realize it was going to a pager, and would suppress
colors.

This patch remedies that; we always set GIT_PAGER_IN_USE
when we start the pager, and the value is respected by both
this program and any spawned children.
Signed-off-by: NJeff King <peff@peff.net>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 8d68a6d5
......@@ -11,8 +11,6 @@
* something different on Windows.
*/
static int spawned_pager;
#ifndef WIN32
static void pager_preexec(void)
{
......@@ -78,7 +76,7 @@ void setup_pager(void)
if (!pager)
return;
spawned_pager = 1; /* means we are emitting to terminal */
setenv("GIT_PAGER_IN_USE", "true", 1);
/* spawn the pager */
pager_argv[0] = pager;
......@@ -109,10 +107,6 @@ void setup_pager(void)
int pager_in_use(void)
{
const char *env;
if (spawned_pager)
return 1;
env = getenv("GIT_PAGER_IN_USE");
return env ? git_config_bool("GIT_PAGER_IN_USE", env) : 0;
}
......@@ -181,6 +181,17 @@ test_expect_success 'color when writing to a file intended for a pager' '
colorful colorful.log
'
test_expect_success TTY 'colors are sent to pager for external commands' '
test_config alias.externallog "!git log" &&
test_config color.ui auto &&
(
TERM=vt100 &&
export TERM &&
test_terminal git -p externallog
) &&
colorful paginated.out
'
# Use this helper to make it easy for the caller of your
# terminal-using function to specify whether it should fail.
# If you write
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册