VisualSVN Server 设置SVN更新版本后发送邮件

最近公司里提了个需求:

每次一有人往SVN里面commit东西,就立马发邮件通知大家。邮件内容包含svn commit 信息和文件变动信息。

这样来明确责任,免得又有人瞎搞,把改错的代码传了上去。害的别人之前本来能跑通的流程,后面莫名其妙没法跑了,以为自己代码有问题,瞎改了半天。

(吐槽下,把之前的本来正常工作的项目代码,改到一半,改成不能跑了。这样也没什么,关键这些鸟人还传到SVN上去,害的项目组里其他同事受到了影响。这是高度的不负责任!!!好歹你施工到一半的代码,改个文件名保存。别把影响其他人工作,只有稳定能测试通过的版本才应当提交到项目文件上!)

于是准备开始动手,本来的计划是这样:

拿Python写个脚本,然后专门给python分配个用户,这个脚本以这个用户的身份,跑去定期update一下,获取下更新信息与文件改动,如果有更新,就通过python的SMTP发件模块来发送邮件,提醒大家。写完后再把这个脚本添加到crontab,让它每分钟自动跑一次即可。

后面发现,根本没必要这么麻烦,直接一个Post-commit hook就好。这是svn自带的一个钩子功能。可以利用这个去触发一个python脚本,从而把项目更新以邮件形式发送出去。

而我们公司需要加这个功能的SVN,是在Windows Server上跑在VisualSVN Server上的,查了下,连python和邮件模块都不用装,直接几句脚本搞定。

对着VisualSVN 源点一下右键,选属性-》HOOKs-》Post-commit hook 添加以下脚本

“%VISUALSVN_SERVER%\bin\VisualSVNServerHooks.exe” ^
commit-notification “%1” -r %2 ^
–from svn_log@your_company.com –to abc@your_company.com;def@your_company.com ^
–smtp-server mail.your_company.com ^
–smtp-port 25 ^
–smtp-user svn_log@your_company.com ^
–smtp-password yourmail_passwd ^
–no-diffs ^
–encoding utf-8

请把以上代码的:

svn_log@your_company.com    替换成 你设置的SVN更新提醒邮箱

abc@your_company.com   def@your_company.com 替换成接收邮件的邮箱,采用以下格式来添加多个 abc;def;ghi;…;…

mail.your_company.com替换成SVN更新提醒邮箱的SMTP发件服务器地址

smtp-port 25 中的25更换成SMTP发件服务器的端口

svn_log@your_company.com 更换成你设置的SVN更新提醒邮箱

yourmail_passwd 更换成你的邮箱密码

如果你的邮箱需要启用ssl,请在密码那行下面加上

–smtp-ssl ^

表示启用SSL验证。

然后保存即可。

不过抽空我还是打算按照之前最初的思路和linux下的Post-commit hook方法写两个脚本出来。。。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注