Re: [PATCH v2] pager: fix crash when pager program doesn't exist

2 messages, 2 authors, 2021-11-22 · open the first message on its own page

Re: [PATCH v2] pager: fix crash when pager program doesn't exist

From: Junio C Hamano <hidden>
Date: 2021-11-22 18:19:27

Junio C Hamano [off-list ref] writes:
I know $GIT_PAGER trumps core.pager, which indicates between
equivalents, environment is taken as a stronger wish.  But I do not
mind if the order were updated to pager.<cmd> trumps $GIT_PAGER,
which in turn trumps core.pager, which in turn trumps $PAGER.
If such a precedence order makes it impossible to override a
configured pager.<cmd> value at runtime, then it is a bad idea.  But
luckily, we can do

    git -c "pager.<cmd>=<this one-shot pager>" cmd ...

to override a configured one, so perhaps it is OK.

I tend to agree with opinions I read elsewhere in this thread that
it would be better not to do the fallback in the first place, but
in this case, what I said I am OK with is when pager.<cmd> is
defined, we do not even look at $GIT_PAGER or later choices, which
is orthogonal.


Re: [PATCH v2] pager: fix crash when pager program doesn't exist

From: Jeff King <hidden>
Date: 2021-11-22 18:38:14

On Mon, Nov 22, 2021 at 10:19:15AM -0800, Junio C Hamano wrote:
Junio C Hamano [off-list ref] writes:
quoted
I know $GIT_PAGER trumps core.pager, which indicates between
equivalents, environment is taken as a stronger wish.  But I do not
mind if the order were updated to pager.<cmd> trumps $GIT_PAGER,
which in turn trumps core.pager, which in turn trumps $PAGER.
If such a precedence order makes it impossible to override a
configured pager.<cmd> value at runtime, then it is a bad idea.  But
luckily, we can do

    git -c "pager.<cmd>=<this one-shot pager>" cmd ...

to override a configured one, so perhaps it is OK.

I tend to agree with opinions I read elsewhere in this thread that
it would be better not to do the fallback in the first place, but
in this case, what I said I am OK with is when pager.<cmd> is
defined, we do not even look at $GIT_PAGER or later choices, which
is orthogonal.
FWIW, I also scratched my head while looking at this topic over seeing
$GIT_PAGER take precedence over a command-specific pager.

I do wonder if changing the override behavior would end up breaking some
scripted uses, though. E.g., imagine some program which does custom
markup of Git output, and ships with a wrapper script like:

  $ cat pretty-git
  #!/bin/sh
  GIT_PAGER='markup-git-output | less' "$@"

  $ pretty-git log -p

which would now behave differently if the user has pager.log set.

I dunno. That is perhaps a bit far-fetched. Most tools that I know of
like that (diff-highlight and diff-so-fancy) just tell you to set up
pager.log in the first place.

Just grepping around on GitHub, I don't see many uses, but this one[1] for
example might get confused:

  export GIT_PAGER=cat # disable pager when running interactively

So I dunno. It is probably unlikely to have much fallout. On the other
hand, I kind of wonder if the benefit is worth changing now.

-Peff

[0] https://github.com/node-inspector/node-inspector/blob/79e01c049286374f86dd560742a614019c02402f/tools/git-changelog.sh#L38
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help