2012-07-03 138 views
4

我嘗試在Subversion 1.6.12服務器上設置提交後掛接以在提交時發送通知郵件。SVN hook mailer.py配置

我已經在基本配置中使用了腳本mailer.py(由utilversion文件夾中的subversion團隊提供)(只需在每次提交之後發送一封電子郵件),它運行良好。

但現在,我只想在/ tags /文件夾中提交時才發送郵件。

這是我的標準mailer.conf(行之有效):

[general] 
smtp_hostname = xxx.xxx.xxx.xxx 

[defaults] 
from_addr = [email protected] 
to_addr = [email protected] 

而這正是我試圖在/標籤/只配置一個郵件:

[general] 
smtp_hostname = xxx.xxx.xxx.xxx 

[defaults] 
from_addr = [email protected] 
to_addr = [email protected] 
for_paths = .*/tags/.* 

但看起來像我誤解了配置,因爲它不起作用:我收到郵件的所有提交(標籤與否)

任何想法? 謝謝。

回答

0

最後,我用utils文件夾中(即使是不建議使用)可在另一個通知腳本解決我的問題:commit-email.pl

使用它像這樣在我的post-commit鉤子按預期方式工作:

REPOS="$1" 
REV="$2" 

LC_ALL=C /usr/share/subversion/hook-scripts/commit-email.pl "$REPOS" $REV -m "tags/.*" -s "[TAGS]" --from [email protected] [email protected] 

但是如果有人對mailer.py做同樣的事情,我仍然感興趣!

+0

commit-email.pl已經過時了http://svn.apache.org/repos/asf/subversion/trunk/tools/hook -scripts/mailer/ –

+2

正如我在我的文章中所說,我知道commit-email.pl已被棄用mailer.py。我最初的問題是關於mailer.py,但我沒有找到辦法使它工作... –

4

有沒有真正的好辦法做到這一點。 mailer.py的設計使任何不與其他組匹配的提交都轉到默認組。

在這mailer.conf.example暗示的文檔,但並沒有真正解釋非常好:

在[defaults]部分指定的選項總是被選中。 不匹配for_repos的存在沒有相關性。請注意,您可能仍然使用for_repos值來提取有用的信息(稍後的更多內容請參閱此 )。任何用戶定義的組沒有for_repos,或者其中包含匹配for_repos的用戶定義的組將被選擇用於潛在用途。

由存儲庫標識的用戶定義組的子集進一步 根據for_paths選項細化。如果至少有 提交中的一個路徑(*)與for_paths正則表達式匹配,則會選擇一個組。注意 路徑是相對於存儲庫的根,並且不 具有前導斜槓。

for_repos的含義對於缺省組也適用於for_paths。 I.E.那for_paths只對變量提取有用。

沒有做任何代碼更改的一個選項是將你的[默認值]中的to_addr設置爲你剛丟棄的地址,如[email protected]。然後用另一個不同的to_addr來設置一個不同的組,然後將它們傳送到某個地方。

如果你願意修改mailer.py一點點,你可以通過在配置類的which_groups功能註釋掉以下兩行避免這種情況:

if not groups: 
    groups.append((None, self._default_params)) 

爲Subversion開發長期我想我們應該給mailer.py添加一個選項來請求默認部分不生成郵件。此外,我們應該修復文檔以更清楚地瞭解此行爲。

0

相反的:

for_paths = .*/tags/.* 

試試這個:

for_paths = ^tags($|.*) 

這是假設的標籤目錄是在你的庫的根。

如果你有一個項目下的標籤會像

for_paths = ^<project name>/tags($|.*)