]> git.ipfire.org Git - thirdparty/git.git/commit - pager.c
pager: turn on "cat" optimization for DEFAULT_PAGER
authorJeff King <peff@peff.net>
Tue, 3 Sep 2013 07:41:50 +0000 (03:41 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 3 Sep 2013 17:36:12 +0000 (10:36 -0700)
commited016612e6956496d5028e41f6414be29c09be4e
tree0ef7153a127500788f7b59ac0fd8d56358523063
parente230c568c4b9a991e3175e5f65171a566fd8e39c
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 <worley@alum.mit.edu>
Suggested-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
pager.c