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"
|
[eE]*) git_editor "$dotest/final-commit"
|
||||||
action=again ;;
|
action=again ;;
|
||||||
[vV]*) action=again
|
[vV]*) action=again
|
||||||
: ${GIT_PAGER=$(git var GIT_PAGER)}
|
git_pager "$dotest/patch" ;;
|
||||||
: ${LESS=-FRSX}
|
|
||||||
export LESS
|
|
||||||
$GIT_PAGER "$dotest/patch" ;;
|
|
||||||
*) action=again ;;
|
*) action=again ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
@ -107,6 +107,19 @@ git_editor() {
|
|||||||
eval "$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 () {
|
sane_grep () {
|
||||||
GREP_OPTIONS= LC_ALL=C grep "$@"
|
GREP_OPTIONS= LC_ALL=C grep "$@"
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user