Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Browse files

pager: turn on "cat" optimization for DEFAULT_PAGER

If the user specifies a pager of "cat" (or the empty
string), whether it is in the environment or from config, we
automagically optimize it out to mean "no pager" and avoid
forking at all. We treat an empty pager variable similary.

However, we did not apply this optimization when
DEFAULT_PAGER was set to "cat" (or the empty string). There
is no reason to treat DEFAULT_PAGER any differently. The
optimization should not be user-visible (unless the user has
a bizarre "cat" in their PATH). And even if it is, we are
better off behaving consistently between the compile-time
default and the environment and config settings.

The stray "else" we are removing from this code was
introduced by 402461a (pager: do not fork a pager if PAGER
is set to empty., 2006-04-16). At that time, the line
directly above used:

   if (!pager)
	   pager = "less";

as a fallback, meaning that it could not possibly trigger
the optimization. Later, a3d023d (Provide a build time
default-pager setting, 2009-10-30) turned that constant into
a build-time setting which could be anything, but didn't
loosen the "else" to let DEFAULT_PAGER use the optimization.

Noticed-by: Dale R. Worley <>
Suggested-by: Matthieu Moy <>
Signed-off-by: Jeff King <>
Signed-off-by: Junio C Hamano <>
  • Loading branch information...
commit ed016612e6956496d5028e41f6414be29c09be4e 1 parent e230c56
@peff peff authored gitster committed
Showing with 1 addition and 1 deletion.
  1. +1 −1  pager.c
2  pager.c
@@ -54,7 +54,7 @@ const char *git_pager(int stdout_is_tty)
pager = getenv("PAGER");
if (!pager)
- else if (!*pager || !strcmp(pager, "cat"))
+ if (!*pager || !strcmp(pager, "cat"))
pager = NULL;
return pager;

0 comments on commit ed01661

Please sign in to comment.
Something went wrong with that request. Please try again.