Re: [PATCH RESEND] Do not override LESS

3 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH RESEND] Do not override LESS

From: Anders Melchiorsen <hidden>
Date: 2016-06-15 22:45:13

Junio C Hamano [off-list ref] writes:
Anders Melchiorsen [off-list ref] writes:
quoted
Passing options to "less" with the LESS environment variable can
interfere with existing environment variables. There are at least two
problems, as the following examples show:

1. Alice is using git with colors. Now she decides to set LESS=i for
some reason. Suddenly, she sees codes in place of colors because LESS
is no longer set automatically.

2. Bob sets GIT_PAGER="less -RS", but does not set LESS. Git sets
LESS=FRSX before calling $GIT_PAGER. Now Bob wonders why his pager is
not always paging, when he explicitly tried to clear the F option.
3. Christ has been happily using git with his PAGER set to "less".  He
   suddenly notices that output from git linewraps and the pager does not
   exit when showing a short output, and gets very unhappy.
Well, I noted that point already, so I had hoped for a reply
explaining why it is a big problem. Maybe setting PAGER="less" is more
common than I think, as I have never seen it.

While I am wary of advocating a patch that makes Christ unhappy, the
"3." issue is easily fixed by him setting GIT_PAGER="less -FRSX".

My concern is that without reading the source, it can be confusing to
figure out what happens with less, $LESS and git. I think my patch
improves on that. On the other hand, predictability is not really
needed if the current setup DWIM. And maybe it does.

This is hardly a big issue either way, so now that I have response on
the patch, I will not pursue it further.


Thanks,
Anders.

Re: [PATCH RESEND] Do not override LESS

From: Jonathan Nieder <hidden>
Date: 2016-06-15 22:45:13

Hi,

Anders Melchiorsen wrote:
Junio C Hamano [off-list ref] writes:
quoted
Anders Melchiorsen [off-list ref] writes:
quoted
Passing options to "less" with the LESS environment variable can
interfere with existing environment variables.
[...]
quoted
quoted
2. Bob sets GIT_PAGER="less -RS", but does not set LESS. Git sets
LESS=FRSX before calling $GIT_PAGER. Now Bob wonders why his pager is
not always paging, when he explicitly tried to clear the F option.
3. Christ has been happily using git with his PAGER set to "less".  He
   suddenly notices that output from git linewraps and the pager does not
   exit when showing a short output, and gets very unhappy.
Well, I noted that point already, so I had hoped for a reply
explaining why it is a big problem. Maybe setting PAGER="less" is more
common than I think, as I have never seen it.
On system where less is not the default pager (e.g. Solaris), it is
very common.
 
While I am wary of advocating a patch that makes Christ unhappy, the
"3." issue is easily fixed by him setting GIT_PAGER="less -FRSX".

My concern is that without reading the source, it can be confusing to
figure out what happens with less, $LESS and git.
So perhaps it is a documentation problem.  How about this patch?

-- %< --
Subject: Documentation: clarify pager configuration

The unwary user may not know how to disable the -FRSX options.

Signed-off-by: Jonathan Nieder <redacted>
---
 Documentation/config.txt |    9 +++++++--
 Documentation/git.txt    |    3 ++-
 2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 9020675..88638f7 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -358,8 +358,13 @@ core.editor::
 	`EDITOR` environment variables and then finally `vi`.
 
 core.pager::
-	The command that git will use to paginate output.  Can be overridden
-	with the `GIT_PAGER` environment variable.
+	The command that git will use to paginate output.  Can
+	be overridden with the `GIT_PAGER` environment
+	variable.  Note that git sets the `LESS` environment
+	variable to `FRSX` if it is unset when it runs the
+	pager.  One can change these settings by setting the
+	`LESS` variable to some other value or by giving the
+	`core.pager` option a value such as "`less -+FRSX`".
 
 core.whitespace::
 	A comma separated list of common whitespace problems to
diff --git a/Documentation/git.txt b/Documentation/git.txt
index 1bc295d..363a785 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -497,7 +497,8 @@ other
 'GIT_PAGER'::
 	This environment variable overrides `$PAGER`. If it is set
 	to an empty string or to the value "cat", git will not launch
-	a pager.
+	a pager.  See also the `core.pager` option in
+	linkgit:git-config[1].
 
 'GIT_SSH'::
 	If this environment variable is set then 'git-fetch'
-- 
1.6.0.481.g9ef3

[PATCH] Documentation: clarify pager.<cmd> configuration

From: Jonathan Nieder <hidden>
Date: 2016-06-15 22:45:13

It was not obvious from the text that pager.<cmd> is a boolean
setting.

While we're changing the description, make some other
improvements: lest we forget and fret, clarify that -p and
pager.<cmd> do not kick in when stdout is not a tty; point to
related core.pager and GIT_PAGER settings; use renamed --paginate
option.

Signed-off-by: Jonathan Nieder <redacted>
---
 This is not related to the core.pager documentation patch I just
 sent; it just caught my eye as I was reading over the file.

 Documentation/config.txt |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 88638f7..b12e695 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -988,9 +988,11 @@ pack.packSizeLimit::
 	linkgit:git-repack[1].
 
 pager.<cmd>::
-	Allows to set your own pager preferences for each command, overriding
-	the default. If `\--pager` or `\--no-pager` is specified on the command
-	line, it takes precedence over this option.
+	Allows turning on or off pagination of the output of a
+	particular git subcommand when outputing to a tty.  If
+	`\--paginate` or `\--no-pager` is specified on the command line,
+	it takes precedence over this option.  To disable pagination for
+	all commands, set `core.pager` or 'GIT_PAGER' to "`cat`".
 
 pull.octopus::
 	The default merge strategy to use when pulling multiple branches
-- 
1.6.0.481.g9ef3
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help