我正在使用svnnotify
。它工作(发送电子邮件和所有),但它总是输出一些错误消息,如
Use of uninitialized value in substr at /usr/lib/perl5/site_perl/5.8.8/SVN/Notify.pm line 1313. substr outside of string at /usr/lib/perl5/site\_perl/5.8.8/SVN/Notify.pm line 1313. Use of uninitialized value in index at /usr/lib/perl5/site\_perl/5.8.8/SVN/Notify.pm line 1313. Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/site\_perl/5.8.8/SVN/Notify.pm line 1314.
我尝试用> /dev/null
运行它,但没有运气。我已经尝试运行它> bla
并且文件bla
显示为空,输出显示在屏幕上。由于svnnotify
没有安静的开关,我该怎么办呢?
答案 0 :(得分:8)
如果没有提交的日志消息,就会发生这种情况。某些用户可能需要使用LART会话来解决此问题。除此之外,正确的做法是修复SVN::Notify模块并将修补程序提交到the SVN::Notify RT queue,但为时已晚,我已经submitted the ticket。
这是补丁:
diff --git a/lib/SVN/Notify.pm b/lib/SVN/Notify.pm index 3f3672b..5387dd2 100644 --- a/lib/SVN/Notify.pm +++ b/lib/SVN/Notify.pm @@ -1308,7 +1308,7 @@ sub prepare_subject { } # Add the first sentence/line from the log message. - unless ($self->{no\_first\_line}) { + if (!$self->{no\_first\_line} and defined $self->{message}[0] and length $self->{message}[0] ) # Truncate to first period after a minimum of 10 characters. my $i = index substr($self->{message}[0], 10), '. '; $self->{subject} .= $i > 0
我认为这会照顾警告,但我怀疑它只是一个创可贴,因为围绕$self->{no\_first\_line}
的设计似乎很狡猾。
答案 1 :(得分:2)
虽然接受的答案肯定有效,但它(在我看来)并不是最好的答案,因为有一天你将不得不维护这段代码(或者更糟糕的是,其他人会这样做),并让它运行没有警告会使你的代码更好。鉴于警告,看起来问题不是你,但很难(但并非不可能)想象版本2.79中的模块会给出错误。也许您的SVN :: Notify副本已经过时了?也许你的代码(或某人的代码)与模块的内部结构相混淆?用我能看到的一些警告很难说清楚,而且我觉得这个问题还有一些问题,而不是眼睛。
答案 2 :(得分:0)
错误打印在stderr上,您可以使用/dev/null
将其重定向到2> /dev/null
。或者,您可以不使用perl -w
。