Skip to content
/ git Public
forked from git/git

Commit

Permalink
am: Fix launching of pager
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
jrn authored and gitster committed Feb 15, 2010
1 parent 190c1cd commit f6dff11
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
5 changes: 1 addition & 4 deletions git-am.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
13 changes: 13 additions & 0 deletions git-sh-setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 "$@"
}
Expand Down

0 comments on commit f6dff11

Please sign in to comment.