2009-10-11 59 views
1

我正在使用svnnotify。它的工作原理(发送电子邮件和所有),但它总是输出一些错误的信息,如如何禁用svnnotify的Perl警告?

 
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

错误信息打印在stderr上,您可以用2> /dev/null将其重定向到/dev/null。或者你可以使它而不是使用perl -w

+3

重定向的问题是你失去了所有的错误输出,而不仅仅是恼人的噪音。可能存在您仍然希望看到的错误。 – 2009-10-11 13:32:36

2

虽然接受的答案肯定有效,但它不是(在我看来)最好的答案,因为有一天你将不得不维护这些代码(或者更糟糕的是,别人会),并且得到它没有警告运行会使你的代码更好。鉴于警告,看起来问题不是你,但想象一下2.79版本的模块会给出错误很难(但并非不可能)。也许你的SVN :: Notify副本是旧的?也许你的代码(或者某人的代码)正在模块的内部?我很难看出我能看到的几个警告,而且我有一种感觉,这个问题比看到的要多一点。

+0

SVN :: Notify是最新版本,我没有以任何方式修改它。只要它有效(邮件发送出去,甚至htmldiff工作),我真的不在乎任何错误。 – Vnuk 2009-10-11 08:42:15

+2

警告与模块版本无关。虽然这个警告看起来像是草率的编码,但Perl版本之间的警告会有所不同。现在什么可能是一个警告可能不是在以前的perls警告。 – 2009-10-11 10:33:52

+2

这是该模块的最新版本的问题。这并不难说,因为你可以看看代码,看看它在做什么。 substr调用周围没有适当的警戒条件来确保它在字符串内。 – 2009-10-11 13:34:37

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}的设计似乎狡猾。

+2

其他可能没有听说过LART的人:http://catb.org/jargon/html/L/LART.html – 2009-10-11 12:13:51