第一种方式 通过svnnotify来发送邮件
/usr/bin/svnnotify --repos-path "$1" --revision "$2" --to real@admin.net --from real@admin99.net --handler "HTML::ColorDiff" --with-diff --smtp mail.admin99.net --charset zh_CN:GB2312 -g zh_CN --svnlook /usr/local/subversion/bin/svnlook --subject-prefix '[SVN更新]'
svnnotify有很多参数,可以通过svnnotify --help 或者man svnnotify 查看
好多文章中在介绍这种方式的时候,没有加上svnlook的绝对路径,我实在是很纳闷,可能是他们的subversiong在安装的时候没有加上 --prefix=/yourpath 参数,把subversion安装在了默认路径,我的subversion是安装在/usr/local/subversion之下的, svnnotify在默认的/usr/bin下找不到svnlook,所以,在邮件通知中无法出现log信息,diff信息等等。加上这个参数之后,问题解决。
还有更搞笑的是,很多关于这个的文章把 -l 参数当作svn 记录日志文件的参数,寒~~ -_-!! 可能是把svnnotify和commit-email.pl搞混了,在svnnotify中,这个参数是 --language 。
这种方式还有另外一个问题,中文转码的问题,经过N次尝试之后,log信息中的中文,diff信息中的中文仍然显示的是乱码,最后因为时间紧迫,不得不先放弃这种方式。
第二种方式 通过commit-email.pl 来发送邮件
/usr/local/subversion/bin/commit-email.pl "$1" "$2" --from real@admin99.net -h admin99.net -s "[SVN 更新]" --diff y svnhejia@51hejia.com
默认情况下,在subversion的bin目录下,没有commit-email.pl这个文件,是我从src中copy过来的。
关于commit-email.pl所能用的参数,可以通过直接执行/usr/local/subversion/bin/commit-email.pl 来查看,当然这个时候是执行不了了,提示错误是参数太少,然后给你列出来一些参数。参数不多。
