看来这段时间没人看到我的问题啊,我自己基本都解决了,希望我的经验能给别人一些帮助吧。
上一个问题:如果版本库更改,修改日志(Message)填写中文会导致邮件不能发送出去。命令行下试验,应该是报错类似“Wide character in subroutine entry at....”,发送失败。
修改字符集相关参数为:--charset GB2312 --io-layer raw
问题解决,邮件中既无中文的乱码,修改日志用中文字符也可正常自动发送邮件。
感叹一下:
本人不懂perl,也都是根据一些错误提示和网上的相关问题在perl目录下文件里瞎转,发现其实很多问题都是自己没有配置好造成的(软件的作者和相关文档的作者真是细心兼强悍啊)。相关的配置方法和说明都很详尽,很多时候都只是我们用的人没有找到或没有好好看而已(惭愧中。。。)。估计高手们也忙得顾不上一个一个帮解决了,呵呵。
不能收发邮件的问题:按楼主的步骤部就班做就好了,但最后实际情况各人可能略微不同。比如我的post-commit.bat内容最后为:
set REPOS=%1
set REV=%2
svnnotify --repos-path %REPOS% -r %REV% --to xxx@xxx.net --smtp xxx.xxx.net -H HTML::ColorDiff -d --subject-prefix [Saming_Server SVN] --charset GB2312 --io-layer raw
但如果加上
SET PATH=C:\PERL\BIN;
SET OS=Windows_NT
SET SystemRoot=C:\WINDOWS
邮件就自动发不出去了。。。但我的安装目录都在c盘,默认安装。应该是环境变量问题吧,我暂时没时间去详细找原因。
楼主其实该提供的东西都给了,尤其SVN-Apache-SVNNotify-HowTo-En.pdf里面的内容,7. SVN Notify Configuration里的两个warrning就基本解释了我前面遇到的一些鬼问题。剩下的就是自己调试了,我开始竟然没有注意。。。
字符集的问题:svnnotify的帮助里也都有了,我自己没去看而已。。。。,如下:
=item charset
svnnotify --charset UTF-8
svnnotify -c Big5
The character set typically used on the repository for log messages, file
names, and file contents. Used to specify the character set in the email
Content-Type headers and, when the C<language> paremeter is specified, the
C<$LANG> environment variable when launching C<sendmail>. Defaults to "UTF-8".
=item io_layer
svnnotify --io-layer raw
svnnotify -o bytes
The Perl IO layer to use for inputting and outputting data. See
L<perlio|perlio> for details. Defaults to "encoding($charset)". If your
repository uses different character encodings, C<charset> should be set to
whatever is the most common character encoding, and C<io_layer> is best set to
C<raw>. In that case, some characters might not look right in the commit
messaage (because an email can manage only one character encoding at a time),
but then C<svnnotify> won't get stuck issuing a slew of warnings.
(用ue直接打开Notify.pm文件也可以看到)
看来很多东西都是自己没去好好找而已,写这么多的注释和说明,高手们也费了不少功夫吧。我们菜鸟学起来也要努力呢,^_* 祝大家用这些“鬼东西”一切顺利哦!哈 |