来自:www.iusesvn.com
subversion是通过Hooks 来控制每次Transaction的行为, 有Pre-Commit, Post-Commit
等.一般情况下我们希望在提交代码后,Subversion可以自动发送邮件给组里的每个成员, 这种情况下我们可以通过post-commit这个脚本来完成.
这些脚本存放在你的Repository的Hooks目录下, 一般情况下, 是以.tmpl后缀结尾, 如果是Unix平台, 需要改成.sh, Windows
平台改成.bat或.cmd .
当一个Transaction成功完成后, 就会调用post-commit.bat 这个脚本.
下面的例子给出了如何在Subversion提交代码后自动发送邮件的例子:
set REPOS=%1
set REV=%2
commit-email-win.pl %REPOS% %REV% -l C:Tempsvnlookcommit-email.log --from
[email=your-<a href=]email@server.com[/email]">your-email@server.com -s "[project-dev] Commit"
commit-email-win.pl 是用来发送邮件的Perl 脚本, 所以你的系统需要安装Perl. %REPOS% 参数是你的Repository的目录
%REV% 参数是Commit的Revision号 --from 表面邮件发送人的地址 -l 参数是日志的目录, 用来记录每次邮件发送的细节 -s
参数是邮件的标题.
下面给出commit-email-win.pl, 您可以将他放在svn/bin 目录下, 并保证svn/bin在系统的PATH环境变量里面.
或者你可以在post-commit.bat中使用绝对路径调用commit-email-win.pl
请根据你的系统配置, 正确改写下面几处变量:
$sendmail #perl.exe所在路径
$svnlook #svnlook.exe所在路径
$emailsFile #存放收件人地址的文件
$tmp_dir #临时目录
$mailserver # SMTP的域名或者IP
找到$mailer->auth( ) , 正确填写你的邮件地址的帐号, 和密码 (SMTP 验证用), 并保证你的Perl 已经安装Authen::SASL
至此,可以直接运行commit-email-win.pl 脚本,来检查脚本是否正常运行,此时mailerDebugLevel可以设置为1.
> commit-email-win.pl d:/svn_repository 2
如果运行成功, 你就可以通过Commit再次检查运行是否正常
通常在Windows下使用安装包安装Perl后是不带Authe::SASL模块得。可以使用ppm连接active perl
的网站安装这一模块,如果由于某些限制不能使用ppm的网络功能,则可以下载相关源码包后编译安装。下面给出从源码安装相关模块的过程:
下载:
http://download.microsoft.com/do ... 5/en-us/nmake15.exe
http://search.cpan.org/CPAN/auth ... Build-0.2805.tar.gz
http://search.cpan.org/CPAN/auth ... en-SASL-2.10.tar.gz
http://search.cpan.org/CPAN/auth ... TP_auth-0.08.tar.gz
将nmake15.exe改名为nmake.exe后拷贝到c:\windows\system32目录下,或者任意一个在系统path环境变量中的目录下。
安装Module-Build模块
打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"
D:\> cd Module-Build-0.2805
D:\Module-Build-0.2805> perl Build.PL //收集系统环境变量
D:\Module-Build-0.2805> Build //进行编译
D:\Module-Build-0.2805> Build test //测试
D:\Module-Build-0.2805> Build install //编译后安装
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
安装Perl模块Authen::SASL,进入Authen-SASL-2.10目录,首先开打Makefile.PL
打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"
C:\Documents and Settings\windy> d:
D:\> cd Authen-SASL-2.10
D:\Authen-SASL-2.10> perl Makefile.PL //收集系统环境变量
出现选择安装提示,选择n继续
D:\Authen-SASL-2.10> nmake //进行编译
D:\Authen-SASL-2.10> nmake test //进行测试
D:\Authen-SASL-2.10> nmake install //编译后安装
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
安装Perl模块Net::SMTP_auth
打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"
D:\> cd Net-SMTP_auth-0.08
D:\Net-SMTP_auth-0.08> perl Makefile.PL //收集系统环境变量
D:\Net-SMTP_auth-0.08> nmake //进行编译
D:\Net-SMTP_auth-0.08> nmake test //测试
D:\Net-SMTP_auth-0.08> nmake install //编译后安装
Post-commit.bat 和commit-email-win[1]_pl_in 在同级目录下。
常见问题列表:
1、 邮件中文乱码
push(@head, "Content-Type: text/plain; charset=UTF-8\n");,这个PL脚本默认是UTF-8的编码方式,因此可以将charset=UTF-8改成你所需要的中文编码方式,这里我改成了charset=GB2312 就可以解决中文乱码的问题了。
附件:是post-commit和commit-email-win这两个文件。大家可以根据自己需要更改里面的内容和样式。commit-email-win大家主要关注PUSH那部分代码就可以。很容易看,相信大家都能看懂。
转帖请包含作者等版权信息、并注明来自:我用Subversion - 邮件通知支持中文的解决办法

作者:
#1

