我总是发现checkin(commit)邮件非常有用,可以跟踪其他人在代码库/存储库中的工作。如何设置SVN以在每次提交时通过电子邮件发送通讯组列表?
我在Windows上运行客户端,在Linux上运行Apache Subversion服务器。以下针对各种平台的答案可能对其他人有用。
答案 0 :(得分:31)
您使用post-commit hooks。这是一个guide。
以下是每次提交后发送电子邮件的示例Ruby脚本:commit-email.rb
答案 1 :(得分:19)
查看独立的Subversion Notify工具(仅限Windows!) 它可以在提交时发送电子邮件等等!
答案 2 :(得分:3)
您需要熟悉repository hooks,尤其是post-commit hook。
答案 3 :(得分:2)
1)使用sudo apt-get
在svn服务器上安装svnnotify2)使用你的repo的post-commit钩子(在svn网站上的post-commit钩子上阅读)
3)打开提交后挂钩文件并粘贴以下代码以使用smtp服务器发送电子邮件。 使用smtp很简单,因为您不需要配置sendmail。
4)确保在\(换行符)之后没有多余的空间。
#!/bin/sh
REPOS="$1"
REV="$2"
TO="xyz@yah.com" # who will receive the notifications
FROM="hello@goog.com" # what will be in "FROM" fields
/usr/bin/svnnotify \
--repos-path "$REPOS" \
--revision "$REV" \
--to $TO \
--from $FROM \
--reply-to $FROM \
--smtp "YOUR.SMTP.MAIL.COM" \
--subject-prefix "[svn commit]" \
--attach-diff -a \
--header 'Message generated on Subversion Check-in.' \
--footer 'OpenSource Team. ' \
--svnlook "/usr/local/bin/svnlook" \
--handler HTML::ColorDiff # make diff pretty
答案 4 :(得分:1)
什么平台?
在Mac OS X上,我安装了msmtp,并在存储库中的挂钩下创建了一个提交后脚本。需要为svn
(或www
)用户设置.msmtprc文件。
REPOS="`echo $1 | sed 's/\/{root of repository}//g'` "
REV="$2"
MSG=`/usr/local/bin/svn log -v -r HEAD https://localhost$REPOS`
/usr/local/bin/msmtp {list of recipients} <<EOF
Subject: SVN-Commit $REPOS#$REV
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8Bit
$MSG
EOF
根据您的需要制作{root of repository}
和{list of recipients}
。注意我使用过UTF-8,因为我们在瑞典(åäö)有一些特殊字符。
答案 5 :(得分:1)
在提交后挂钩上有一个相关的问题here。就个人而言,我更喜欢发送消息给我可以从中获取RSS源,因为每次提交的电子邮件会很快超载我的收件箱。
答案 6 :(得分:1)
在RSS Feed上借调@ Matt Miller。
有一个名为WebSVN的有用工具,它提供每个存储库的RSS源以及具有完整提交消息的各个分支/标签/文件夹。它也是一个很棒的Web界面,可以快速查看文件历史记录和提交/差异,而无需运行更新并打开您选择的编辑器。
答案 7 :(得分:1)
正如别人所说,“什么平台”。在Windows上,我使用'blat',这是一个免费的命令行SMTP邮件程序,以及一个提交后和另一个批处理文件。
post commit如下所示:(只调用另一个批处理文件)
call d:\subversion\repos\rts\hooks\mail %1 %2
mail.bat看起来像这样:
copy d:\subversion\repos\RTS\hooks\Commitmsg.txt %temp%\commit.txt
copy d:\subversion\repos\RTS\hooks\subjbase.txt %temp%\subject.txt
svnlook info -r %2 %1 >> %temp%\commit.txt
echo Revision %2 >> %temp%\commit.txt
svnlook changed -r %2 %1 >> %temp%\commit.txt
svnlook author -r %2 %1 >> %temp%\subject.txt
c:\utils\blat %temp%\commit.txt -t <me@my.email.com> -sf %temp%\subject.txt -server ServerName -f "SVN Admin <svn@my.email.com>" -noh2
编写SVN钩子的最大问题是你可能基本上没有环境设置 - 没有exe路径,没有临时路径等等。虽然可能在最近的SVN构建中有所改进。
答案 8 :(得分:1)
我使用类似于此one的提交后脚本。
它会发送一封精美的HTML电子邮件。我更新了一些内容,它突出显示以红色删除的代码,并突出显示以蓝色添加的代码。
答案 9 :(得分:1)
您可以使用buildbot。这是一种工具,可以在办理登机手续时采取任意行动。它是一个功能齐全的持续集成系统,但如果您只是想要电子邮件,它当然可以处理它。它具有各种SCM的插件,包括SVN。
答案 10 :(得分:1)
在特定的subversion分支的“hooks”目录中,有9个模板文件可供您入门。
关键点:在重命名之前,subversion不会执行任何文件。要使post-commit.tmpl在unix下执行,请将其重命名为“post-commit”。在Windows下,将其重命名为“post-commit.bat”或“post-commit.exe”。如果文件名为“post-commit.tmpl”或“post-commit.sh”等,则Subversion将不执行该文件。
此外,请确保该文件可由运行subversion的同一用户执行。
答案 11 :(得分:1)
VisualSVN Server具有有用的提交电子邮件通知挂钩VisualSVNServerHooks.exe
。它支持彩色差异,只有在提交影响某些存储库路径时才能发送提交通知。
答案 12 :(得分:1)
我是在Linux服务器上分三步完成的:
创建邮件列表(svn-notify@xy.com
)并将人员添加到列表中。
修改/path_to_your_svn/svn/hooks/svn-notify/mailer.conf
/path_to_your_svn/svn/hooks/post-commit
文件中:/path_to_your_svn/svn/hooks/svn-notify/mailer.py commit "$REPOS" "$REV" /path_to_your_svn/svn/hooks/svn-notify/mailer.conf
答案 13 :(得分:0)
Subversion源代码中包含一个用Perl编写的(大)示例(可以是viewed here)。
答案 14 :(得分:0)
另外SVNMailer,适用于Linux。
答案 15 :(得分:0)
检查here所述的 svn-mod-email 包。 svn-mod-email 是一个功能强大的SVN电子邮件通知管理工具,以Debian存档的形式提供。它易于安装,配置和使用。