git-svn: delay term initialization
authorEric Wong <normalperson@yhbt.net>
Sun, 14 Sep 2014 07:38:29 +0000 (07:38 +0000)
committerEric Wong <normalperson@yhbt.net>
Sun, 14 Sep 2014 08:08:54 +0000 (08:08 +0000)
On my Debian 7 system, this fixes annoying warnings when the output
of "git svn" commands are redirected:

Unable to get Terminal Size. The TIOCGWINSZ ioctl didn't work.
The COLUMNS and LINES environment variables didn't work. The
resize program didn't work.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
git-svn.perl
index 97ff562843c7407533b605aba907e07b4543cb4e..b6e2186cef0fcddc7c7b82378b07941d9f671a92 100755 (executable)
@@ -306,13 +306,16 @@ sub readline {
 }
 package main;
 
-my $term = eval {
-       $ENV{"GIT_SVN_NOTTY"}
-               ? new Term::ReadLine 'git-svn', \*STDIN, \*STDOUT
-               : new Term::ReadLine 'git-svn';
-};
-if ($@) {
-       $term = new FakeTerm "$@: going non-interactive";
+my $term;
+sub term_init {
+       $term = eval {
+               $ENV{"GIT_SVN_NOTTY"}
+                       ? new Term::ReadLine 'git-svn', \*STDIN, \*STDOUT
+                       : new Term::ReadLine 'git-svn';
+       };
+       if ($@) {
+               $term = new FakeTerm "$@: going non-interactive";
+       }
 }
 
 my $cmd;
@@ -424,6 +427,7 @@ sub ask {
        my $default = $arg{default};
        my $resp;
        my $i = 0;
+       term_init() unless $term;
 
        if ( !( defined($term->IN)
             && defined( fileno($term->IN) )