am: Fix launching of pager
The pagination functionality in git am has some problems: - It does not check if stdout is a tty, so it always paginates. - If $GIT_PAGER uses any environment variables, they are being ignored, since it does not run $GIT_PAGER through eval. - If $GIT_PAGER is set to the empty string, instead of passing output through to stdout, it tries to run $dotest/patch. Fix them. While at it, move the definition of git_pager() to git-sh-setup so authors of other commands are not tempted to reimplement it with the same mistakes. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
190c1cda7e
commit
f6dff119d5
@ -663,10 +663,7 @@ do
|
||||
[eE]*) git_editor "$dotest/final-commit"
|
||||
action=again ;;
|
||||
[vV]*) action=again
|
||||
: ${GIT_PAGER=$(git var GIT_PAGER)}
|
||||
: ${LESS=-FRSX}
|
||||
export LESS
|
||||
$GIT_PAGER "$dotest/patch" ;;
|
||||
git_pager "$dotest/patch" ;;
|
||||
*) action=again ;;
|
||||
esac
|
||||
done
|
||||
|
@ -107,6 +107,19 @@ git_editor() {
|
||||
eval "$GIT_EDITOR" '"$@"'
|
||||
}
|
||||
|
||||
git_pager() {
|
||||
if test -t 1
|
||||
then
|
||||
GIT_PAGER=$(git var GIT_PAGER)
|
||||
else
|
||||
GIT_PAGER=cat
|
||||
fi
|
||||
: ${LESS=-FRSX}
|
||||
export LESS
|
||||
|
||||
eval "$GIT_PAGER" '"$@"'
|
||||
}
|
||||
|
||||
sane_grep () {
|
||||
GREP_OPTIONS= LC_ALL=C grep "$@"
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user