Subject: [PATCH v2 0/7] Re: 'git svn log' no longer uses the pager

From: Jonathan Nieder <[email-masked]>
Date: Fri, 19 Feb 2010 00:50:10 -0600

Here is a replacement for the jn/maint-fix-pager series currently in
pu.  As for the previous version, the point is to fix the breakage
from dec543 (am -i, git-svn: use "git var GIT_PAGER", 2009-10-30) 
reported at http://thread.gmane.org/gmane.comp.version-control.git/139831
I also added some new tests to make sure pagination works in other
ways.

In this version, patches 1-5 are the same fixes as before, with
commit messages tweaked to take into account feedback from the
previous round.  You can see what they fix by using 'git svn log'
and the '(v)iew' option of 'git am --interactive', which both
stopped paginating output in commit dec543.  You can see what they
don’t break by running some other command such as 'git log' in
circumstances where its output is not supposed to be paginated.

The test in patch 6 has some fixes that didn’t make it to pu last
time.  To avoid risk of spewing useless output to /dev/tty, the
tests requiring a terminal only run with the --verbose option.

Patch 7 is the one I am most interested in feedback about.  It allows
automatic runs of tests without a real terminal by creating its own
pty as needed.  But it might be a portability nightmare: is
posix_openpt widely available?  Will open("/dev/ptmx", ...) do just
as well most places?  And how important is it that these tests run
on the most obscure platforms?

Because these questions are still up in the air for me, I do not
think patch 7 is suitable for use outside pu yet.  What I would most
like to hear is that /dev/ptmx works often enough, because that is
a condition that can be tested for at runtime without adding
complication to the Makefile.  But if that is not the case, there
are other options.

Jonathan Nieder (7):
  Fix 'git var' usage synopsis
  Make 'git var GIT_PAGER' always print the configured pager
  git.1: Clarify the behavior of the --paginate option
  git svn: Fix launching of pager
  am: Fix launching of pager
  tests: Add tests for automatic use of pager
  t7006-pager: if stdout is not a terminal, make a new one

 .gitignore                |    1 +
 Documentation/git-var.txt |    2 +-
 Documentation/git.txt     |    8 ++-
 Makefile                  |    6 ++
 builtin-var.c             |    4 +-
 cache.h                   |    2 +-
 git-am.sh                 |    5 +-
 git-sh-setup.sh           |   13 ++++
 git-svn.perl              |    9 ++-
 pager.c                   |    6 +-
 t/t7006-pager.sh          |  171 +++++++++++++++++++++++++++++++++++++++++++++
 test-terminal.c           |   62 ++++++++++++++++
 12 files changed, 274 insertions(+), 15 deletions(-)
 create mode 100644 t/t7006-pager.sh
 create mode 100644 test-terminal.c