|
windows 下SVN邮件使用及,SVN邮件乱码及信息错误
使用SVN1.40
装好后使用如下方法设置邮件发送功能:
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.pl %REPOS% %REV% -l C:Tempsvnlookcommit-email.log --from [email=your-email@server.com]your-email@server.com[/email] -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.pl d:/svn_repository 2
如果运行成功, 你就可以通过Commit再次检查运行是否正常
通常在Windows下使用安装包安装Perl后是不带Authe::SASL模块得。可以使用ppm连接active perl 的网站安装这一模块,如果由于某些限制不能使用ppm的网络功能,则可以下载相关源码包后编译安装。
按上面的方法,邮件是可以发了,但中文邮件内容乱码,且发送的信息有问题.
求助问题:
仓库目录为:d:/svn_repository
命令行下使用: commit-email.pl d:/svn_repository 2 调试,发送邮件格式正确,但中文内容乱码;
使用POST-COMMIT调用时,发送内容却是:
Author: K:\Program Files\Subversion\bin\commit-email.pl: `"K:\Program Files\Subversion\bin\svnlook.exe" info N:\\svntest\\projecta -r 16' failed with this output:
Date:
New Revision: 16
Modified:
Log:
K:\Program Files\Subversion\bin\commit-email.pl: `"K:\Program Files\Subversion\bin\svnlook.exe" diff N:\\svntest\\projecta -r 16' failed with this output:
我的POST-COMMIT:
set REPOS="d:\\svn_repository\\"
set REV="$2"
commit-email.pl %REPOS% %REV% --from test@google.com -l "C:\\Tempsvnlookcommit-email.log" -s "svn TEST"
PS: 将POST-COMMIT改为如下:
set REPOS="d:\\svn_repository\\"
set REV="$2"
commit-email.pl %REPOS% %REV%
#--from test@google.com -l "C:\\Tempsvnlookcommit-email.log" -s "svn TEST"
发的信息还是格式不对;
这样难道和调试调用有啥区别?
(commit-email.pl d:\svn_repository 3)
不懂PERL,语法如此奇怪,望达人指点指点;
要是空把您正在用的 POST-COMMIT贴出来大家参考参考(主要是我,哈哈) ,走过路过的帮下哈,谢谢啊
| |
| |
|
|