git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 5/6] am: Fix launching of pager

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Feb 14, 2010, 12:07 UTC
Message-ID
<20100214120731.GE3499@progeny.tock>
In-Reply-To
<20100214115430.GA1849@progeny.tock>
The git_pager() function used 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.

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.

If GIT_PAGER is set to the empty string, pagination is disabled. This is different from the treatment of GIT_EDITOR by git_editor(), but consistency with the use of GIT_PAGER by git builtins is more important.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
 git-am.sh       |    5 +----
 git-sh-setup.sh |   16 ++++++++++++++++
 2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/git-am.sh b/git-am.sh
index 3c08d53..b11af03 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -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
diff --git a/git-sh-setup.sh b/git-sh-setup.sh
index d56426d..f3b5237 100755
--- a/git-sh-setup.sh
+++ b/git-sh-setup.sh
@@ -107,6 +107,22 @@ git_editor() {
 	eval "$GIT_EDITOR" '"$@"'
 }
 
+git_pager() {
+	if test -z "${GIT_PAGER+set}"
+	then
+		if tty <&1 >/dev/null 2>/dev/null
+		then
+			GIT_PAGER=cat
+		else
+			GIT_PAGER=$(git var GIT_PAGER)
+		fi
+	fi
+	: ${LESS=-FRSX}
+	export LESS
+
+	eval "$GIT_PAGER" '"$@"'
+}
+
 sane_grep () {
 	GREP_OPTIONS= LC_ALL=C grep "$@"
 }
-- 
1.7.0
Previous: Eric WongNext: Junio C Hamano
Message 16 of 27 in “'git svn log' no longer uses the pager”
  1. Sebastian CelisFeb 13, 2010
  2. Jeff KingFeb 13, 2010
  3. Jonathan NiederFeb 14, 2010
  4. 1/6 Fix 'git var' usage synopsisJonathan Nieder, Feb 14, 2010
  5. Junio C HamanoFeb 15, 2010
  6. 1/6 Fix 'git var' usage synopsisJonathan Nieder, Feb 15, 2010
  7. Jeff KingFeb 15, 2010
  8. 2/6 Make 'git var GIT_PAGER' always print the configured pagerJonathan Nieder, Feb 14, 2010
  9. Jeff KingFeb 15, 2010
  10. Jonathan NiederFeb 15, 2010
  11. Jeff KingFeb 15, 2010
  12. 3/6 git.1: Clarify the behavior of the --paginate optionJonathan Nieder, Feb 14, 2010
  13. Jeff KingFeb 15, 2010
  14. 4/6 git svn: Fix launching of pagerJonathan Nieder, Feb 14, 2010
  15. Eric WongFeb 15, 2010
  16. 5/6 am: Fix launching of pagerJonathan Nieder, Feb 14, 2010
  17. Junio C HamanoFeb 15, 2010
  18. 5/6 am: Fix launching of pagerJonathan Nieder, Feb 15, 2010
  19. 5/6 am: Fix launching of pagerJonathan Nieder, Feb 15, 2010
  20. Jeff KingFeb 15, 2010
  21. 5/6 am: Fix launching of pagerJonathan Nieder, Feb 15, 2010
  22. Jeff KingFeb 15, 2010
  23. Johannes SixtFeb 15, 2010
  24. 6/6 tests: Add tests for automatic use of pagerJonathan Nieder, Feb 14, 2010
  25. Jeff KingFeb 15, 2010
  26. 6/6 tests: Add tests for automatic use of pagerJonathan Nieder, Feb 15, 2010
  27. Jeff KingFeb 15, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.