summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 190c1cd)
raw | patch | inline | side by side (parent: 190c1cd)
author | Jonathan Nieder <jrnieder@gmail.com> | |
Mon, 15 Feb 2010 05:04:13 +0000 (23:04 -0600) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Mon, 15 Feb 2010 06:05:17 +0000 (22:05 -0800) |
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>
- 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>
git-am.sh | patch | blob | history | |
git-sh-setup.sh | patch | blob | history |
diff --git a/git-am.sh b/git-am.sh
index 3c08d53161faa72744ab64a1391d85cf9243f006..b11af03e0b47f248304adfe4317949da92196388 100755 (executable)
--- a/git-am.sh
+++ b/git-am.sh
[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
diff --git a/git-sh-setup.sh b/git-sh-setup.sh
index d56426dd396190a07de7d661cd22fb284b759ca8..44fb4670aed97fb4eebc2c8985dff9c363732507 100755 (executable)
--- a/git-sh-setup.sh
+++ b/git-sh-setup.sh
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 "$@"
}