2009-10-11 98 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