题
我想为我正在从事的项目设置提交电子邮件,如下所述:
http://生产oss.com/en/vc.html#commit-emails
也就是说,使用提交后挂钩将电子邮件发送到包含提交标题/日志和更改差异的列表。
在 Linux 机器上进行设置的最简单方法是什么?
解决方案
当创建新的存储库的样品post-commit钩子在hooks/post-commit.tmpl
提供。它包含一个一行看起来或多或少是这样的:
/usr/share/subversion/hook-scripts/commit-email.pl "$REPOS" "$REV" commit-watchers@example.org
只是要发送通知,重命名脚本hooks/post-commit
地址代替电子邮件(删除tmpl
扩展名),并使其可执行(chmod a+x
)。
当你运行该脚本commit-email.pl
不带任何参数,你会看到额外的选项,允许例如修改主题行或发件人地址的使用界面。
请注意,是Debian的情况下的commit-email.pl
脚本位于一个可选subversion-tools
包。
其他提示
虽然这个问题有点老了,但我想我会为那些来自谷歌的人留下我的意见:
我已经考虑过这里提到的解决方案。这 commit-email.pl
对我来说工作既轻松又更好。但是,我发现这两种解决方案都缺乏正确的格式。
就这样 svnnotify
包似乎为我生成了足够好的格式和彩色电子邮件。
在 Debian/Ubuntu 系统上,您可以通过键入以下内容来安装它:
apt-get install libsvn-notify-perl
然后,如果您要向 Gmail 帐户发送电子邮件,由于 Gmail 中奇怪的 CSS 支持,我强烈建议您应用该补丁 在这里找到, , 意思是:
- 下载
HTML.pm
和ColorDiff.pm
- 换成他们
/usr/share/perl5/SVN/Notify/HTML.pm
和/usr/share/perl5/SVN/Notify/HTML/ColorDiff.pm
, , 分别。
最后,设置 post-commit
钩子脚本通常的方式:
# email notifications for commits
/usr/bin/svnnotify --repos-path "$REPOS" --revision "$REV" \
--to your.email@address.com \
--from from.email@address.com \
--with-diff \
--subject-cx \
--subject-prefix 'Your Project Name: ' \
--handler HTML::ColorDiff \
--css-inline
2>&1 &
exit 0
我们使用 svnmailer 这一点。我们符号链接我们的库特定的post-commit
钩子脚本到一个脚本,进而调用svnmailer。配置是相当直接的,并与他们simple.conf
示例配置,你可以启动和运行在几分钟内。请注意,它是用Python编写,所以这是要安装的先决条件。
我们的整个后提交钩子是只有几行(请注意,你可能会做其他的东西在你的post-commit钩子,但我们目前还没有):
#!/bin/sh
CONFIG="/usr/local/svnmailer/default.conf"
MAILER="/usr/bin/svn-mailer"
# These are passed in by subversion
REPOS="$1"
REV="$2"
"${MAILER}" --commit \
--config "${CONFIG}" \
--repository "${REPOS}" \
--revision "${REV}" \
--background
检查 svn-mod-电子邮件 包描述 这里. 。这 svn-mod-电子邮件 是一个强大的 SVN 电子邮件通知管理工具,以 Debian 存档形式提供。它易于安装、配置和使用。