读取“svn log”命令输出时出错

时间:2010-11-24 13:01:53

标签: perl svn

如果我尝试执行以下脚本,则会出现“svn:Write error” 但是,如果我禁用“最后”行,则没有任何错误 为什么呢?

#!/usr/bin/perl

my $repos = $ARGV[0];
my $rev = $ARGV[1];

my $repoURL = "file:///" . $ARGV[0];

open (SVNLOG, "svn log -r $rev -v $repoURL | ");

while (my $line = <SVNLOG>) {
   last;
}

close(SVNLOG);

2 个答案:

答案 0 :(得分:2)

因为svn进程正在尝试写入流(其标准输出),并且在流完成之前关闭了流。如果您不希望看到此错误行,则必须将svn标准错误重定向到/dev/null,或者确保在关闭之前阅读其输出的所有文件句柄。

答案 1 :(得分:0)

不直接回答您的问题,但您应该考虑使用CPAN中的SVN::Client而不是直接使用svn命令行工具。