如何禁用svnnotify的Perl警告?

时间:2009-10-11 08:01:32

标签: perl

我正在使用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没有安静的开关,我该怎么办呢?

3 个答案:

答案 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