mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
pager: remove 'S' from $LESS by default
By default, Git used to set $LESS to -FRSX if $LESS was not set by
the user. The FRX flags actually make sense for Git (F and X because
sometimes the output Git pipes to less is short, and R because Git
pipes colored output). The S flag (chop long lines), on the other
hand, is not related to Git and is a matter of user preference. Git
should not decide for the user to change LESS's default.
More specifically, the S flag harms users who review untrusted code
within a pager, since a patch looking like:
-old code;
+new good code; [... lots of tabs ...] malicious code;
would appear identical to:
-old code;
+new good code;
Users who prefer the old behavior can still set the $LESS environment
variable to -FRSX explicitly, or set core.pager to 'less -S'.
The documentation in config.txt is made a bit longer to keep both an
example setting the 'S' flag (needed to recover the old behavior)
and an example showing how to unset a flag set by Git.
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
d8779e1e25
commit
b3275838d9
@@ -558,14 +558,19 @@ core.pager::
|
|||||||
configuration, then `$PAGER`, and then the default chosen at
|
configuration, then `$PAGER`, and then the default chosen at
|
||||||
compile time (usually 'less').
|
compile time (usually 'less').
|
||||||
+
|
+
|
||||||
When the `LESS` environment variable is unset, Git sets it to `FRSX`
|
When the `LESS` environment variable is unset, Git sets it to `FRX`
|
||||||
(if `LESS` environment variable is set, Git does not change it at
|
(if `LESS` environment variable is set, Git does not change it at
|
||||||
all). If you want to selectively override Git's default setting
|
all). If you want to selectively override Git's default setting
|
||||||
for `LESS`, you can set `core.pager` to e.g. `less -+S`. This will
|
for `LESS`, you can set `core.pager` to e.g. `less -S`. This will
|
||||||
be passed to the shell by Git, which will translate the final
|
be passed to the shell by Git, which will translate the final
|
||||||
command to `LESS=FRSX less -+S`. The environment tells the command
|
command to `LESS=FRX less -S`. The environment does not set the
|
||||||
to set the `S` option to chop long lines but the command line
|
`S` option but the command line does, instructing less to truncate
|
||||||
resets it to the default to fold long lines.
|
long lines. Similarly, setting `core.pager` to `less -+F` will
|
||||||
|
deactivate the `F` option specified by the environment from the
|
||||||
|
command-line, deactivating the "quit if one screen" behavior of
|
||||||
|
`less`. One can specifically activate some flags for particular
|
||||||
|
commands: for example, setting `pager.blame` to `less -S` enables
|
||||||
|
line truncation only for `git blame`.
|
||||||
+
|
+
|
||||||
Likewise, when the `LV` environment variable is unset, Git sets it
|
Likewise, when the `LV` environment variable is unset, Git sets it
|
||||||
to `-c`. You can override this setting by exporting `LV` with
|
to `-c`. You can override this setting by exporting `LV` with
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ git_pager() {
|
|||||||
else
|
else
|
||||||
GIT_PAGER=cat
|
GIT_PAGER=cat
|
||||||
fi
|
fi
|
||||||
: ${LESS=-FRSX}
|
: ${LESS=-FRX}
|
||||||
: ${LV=-c}
|
: ${LV=-c}
|
||||||
export LESS LV
|
export LESS LV
|
||||||
|
|
||||||
|
|||||||
2
pager.c
2
pager.c
@@ -85,7 +85,7 @@ void setup_pager(void)
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
if (!getenv("LESS"))
|
if (!getenv("LESS"))
|
||||||
env[i++] = "LESS=FRSX";
|
env[i++] = "LESS=FRX";
|
||||||
if (!getenv("LV"))
|
if (!getenv("LV"))
|
||||||
env[i++] = "LV=-c";
|
env[i++] = "LV=-c";
|
||||||
env[i] = NULL;
|
env[i] = NULL;
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ sub run_pager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
open STDIN, '<&', $rfd or fatal "Can't redirect stdin: $!";
|
open STDIN, '<&', $rfd or fatal "Can't redirect stdin: $!";
|
||||||
$ENV{LESS} ||= 'FRSX';
|
$ENV{LESS} ||= 'FRX';
|
||||||
$ENV{LV} ||= '-c';
|
$ENV{LV} ||= '-c';
|
||||||
exec $pager or fatal "Can't run pager: $! ($pager)";
|
exec $pager or fatal "Can't run pager: $! ($pager)";
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user