设置SVN提交电子邮件的最简单/最佳方法是什么?

19

我想在我正在工作的项目中设置提交邮件,如此处所述:
http://producingoss.com/en/vc.html#commit-emails

也就是说,使用提交后的钩子(post commit hook)向包含提交标题/日志和更改差异的列表发送电子邮件。

在Linux机器上设置这个最简单的方法是什么?

4个回答

34

虽然这个问题有点老,但我想为那些从Google来到这里的人留下我的看法:

我考虑过这里提到的解决方案。对于我来说,commit-email.pl 更容易且更有效。然而,我发现两个解决方案都缺乏适当的格式。

因此,svnnotify 包似乎能够为我产生足够好的格式和彩色电子邮件。

在 Debian/Ubuntu 系统上,您可以通过键入以下内容进行安装:

apt-get install libsvn-notify-perl

如果您要发送电子邮件至Gmail账户,由于Gmail中奇怪的CSS支持,我强烈建议应用此处找到的补丁,即:

  • 下载HTML.pmColorDiff.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

1
我希望我能投两次赞成票 :-) 这样你会收到很棒的邮件,点赞! - Brimstedt
+1 对于 --css-inline。这应该放入主 SVN 通知中。 - Prof. Falken
+1 漂亮的电子邮件格式。电子邮件如此漂亮,以至于您迫不及待地想提交! - dawez
花了我一个小时才终于让它工作。进行了很多chmod操作。最终的解决方法是在开头添加 #!/bin/bash,并将 $REPOS$REV 替换为 $1$2 - KoalaBear
太棒了!非常感谢! - Mirko Seifert

18

创建新仓库时,会提供一个示例的提交后钩子文件 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包中。


好的,这当然可以被称为“最简单的”。谢谢! - Will Robertson

10

我们使用svnmailer来实现此功能。我们将每个特定仓库的post-commit钩子脚本创建符号链接到单个脚本,该脚本调用svnmailer。配置非常简单,并且使用他们的simple.conf示例配置只需几分钟即可运行。请注意,它是用Python编写的,因此安装前需要满足这一先决条件。

我们整个post-commit钩子脚本只有几行代码(请注意,您可能会在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

如果两个都能接受,我就会选择两个。一旦我发现commit-email.pl太过局限,我就会直接转向svnmailer。再次感谢! - Will Robertson
好的,当你这样做时,请确保回来更改你接受的答案 ;) - Sean Bright

-1

请查看这里所描述的svn-mod-email软件包。 svn-mod-email是一个强大的SVN电子邮件通知管理工具,可作为Debian归档文件交付。它易于安装、配置和使用。


链接已失效!!但不确定为什么有人会对这个答案投反对票? - hriziya
链接又可以使用了。谢谢你告诉我。 - Guardian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接