如何基于提交消息关键字有条件地发送svn提交电子邮件?

时间:2009-10-13 14:29:38

标签: svn email notifications post-commit

VisualSVN正在运行,svnnotify通过提交后发送通知电子邮件(常见设置),但我想在某些关键字包含在内时不发送电子邮件提交消息,例如“#noemail”或类似内容。

任何人都有一个例子,我可以添加到我的post-commit钩子中查看提交消息并防止在存在某些关键字时发送电子邮件?

谢谢!


仅供参考,这是我目前提交后内容的一个例子:

set REPOS=%1
set REV=%2
set EMAILADDRESSES="example@example.com"
set OS=Windows_NT
set PATH=%PATH%;C:\Program Files\VisualSVN Server\bin\;C:\Perl\site\bin;C:\Perl\bin;

svnnotify --repos-path %REPOS% --revision %REV% --to %EMAILADDRESSES% -f svn@example.com --smtp smtp.example.com --subject-prefix "SVN - Rev: %%d - "

2 个答案:

答案 0 :(得分:3)

以下是解决方案,使用关键字“nosvnemail”:

set REPOS=%1
set REV=%2
set EMAILADDRESSES="example@example.com"
set OS=Windows_NT
set PATH=%PATH%;C:\Program Files\VisualSVN Server\bin\;C:\Perl\site\bin;C:\Perl\bin;

svnlook log -r %2 %1 | FindStr "nosvnemail"

IF %ERRORLEVEL% EQU 0 GOTO SKIPEMAIL

svnnotify --repos-path %REPOS% --revision %REV% --to %EMAILADDRESSES% -f svn@example.com --smtp smtp.example.com --subject-prefix "SVN - Rev: %%d - "

:SKIPEMAIL

exit 0

答案 1 :(得分:0)

对于linux,以下hooks/post-commit将起作用:

REPOS="$1"
REV="$2"
SVNLOOK=$(which svnlook)

LOGMSG=$($SVNLOOK log -r $REV $REPOS)
if [[ $LOGMSG != nosvnemail* ]] ; then
    "$REPOS"/hooks/mailer.py commit "$REPOS" $REV "$REPOS"/mailer.conf
fi

nosvnemail字符串必须是日志消息中的第一个。