svn hooks 自动发邮件
在svn库中有一个目录是hooks
这个目录是当svn发生一定事件时触发的脚本
其中post-commit 就是当你commit时触发的
在这个目录中会有一些模板文件
正常生效是去掉模板的扩展名
svn 还存在一个svnlook命令
是用来查看svn库的信息的
或是你commit的信息
hooks里可以调用svnlook
下面就是我实现的方法
1.需要commit-email.pl
这个文件可以网上下载
我的附件中有我改后的
修改
#为注释 +为要加入的行
#my ($sendmail, $smtp_server);
+my ($sendmail, $smtp_server,$uname,$upasswd);
+$smtp_server = "mail.xxxx.com";
+$uname="svn\@xxxx.com";
+$upasswd="*********";
#/usr/bin/sendmail
...............................................
...............................................
elsif (defined $smtp_server and @email_addresses)
{
my $smtp = Net::SMTP->new($smtp_server);
+#qvb
+ handle_smtp_error($smtp, $smtp->auth($uname,$upasswd));
+#qvb add
handle_smtp_error($smtp, $smtp->mail($mail_from));
handle_smtp_error($smtp, $smtp->recipient(@email_addresses));
handle_smtp_error($smtp, $smtp->data());
handle_smtp_error($smtp, $smtp->datasend(@head, @body));
2.vi mail-list.sh
#!/bin/sh
LIST="qvb3d@126.com other@qq.com ";
echo $LIST
保存
有多少邮箱都用空格 格开写在后面
chmod +x mail-list.sh
3.安装 perl-GSSAPI perl-Authen-SASL 两个包
根据系统而定,安什么样的包
如果没有,自己编译perl环境安装这两个包
4.vi post-commit
#!/bin/sh
# Subversion post commit hook
REPOS="$1"
REV="$2"
PROJ=`basename $REPOS`
MAILLIST=`/home/svn/data/hooks/mail-list.sh $REPOS $REV`
#echo $REPOS $REV >/dev/pts/0
/home/svn/data/hooks/commit-email.pl $REPOS $REV \
--from "svn@xxx.com" --diff y -s "SVN: [$PROJ]" $MAILLIST
保存这里的目录都要指定绝对路径
echo $REPOS $REV >/dev/pts/0
这行是这测试用的
为了在ssh终端看到svn触发事件没有 要是本机你也可以改成/dev/console
一触发就会在屏幕上看到
5.可以编写测试脚本 test.sh
vi test.sh
#!/bin/sh
/home/svn/data/hooks/commit-email.pl /home/svn/data 56 --from "xxxx@xxxx.com" --diff y -s "SVN: [data]" "xxxx@qq.com"
保存
chmod +x test.sh
注意上面的56是第多少次的commit
你可以改成1
有些邮件服务器是不能给自己发的,所以不要发给commit-email.pl中登录的smtp用户
data 就是库名
6.到邮箱收一下你的邮件
看是不是,已经成功了
前面的前提是,最好有一个自己的公司的smtp服务器
目前 126 163 我没有测试
分享到:
相关推荐
配置SVN自动发送邮件,一般情况下我们希望在提交代码后, Subversion可以自动发送邮件给组里的每个成员。资源包含详细配置说明及要用到的工具脚本
svn提交自动邮件提醒 commit-email.pl+钩子程序
包含内容: 邮件通知 强制写日志 禁止修改log ..............
Svn自动发邮件配置脚本及时提醒相关开发人员
Windows系统下如何搭建svn服务器; 实现SVN自动邮件提醒版本变化
1.下载commit-email.pl ...因为Perl通过SMTP发送邮件,其中SMTP验证的时候需要Authen::SASL模块。 如果没安装此模块,则会提示如下错误:SMTP Error:Need MIME::Base64 and Autuen::SASL todo auth。
SVN自动提交脚本,通过执行SVN Status命令来获取当前目录的Svn diff,通过替换SVN diff来将文件列表转换成Svn提交命令,最后对执行所有SVN命令来完成自动提交,可以用于SVN仓库的代码自动导入
svn强制写日志hooks delete-svn-folders.reg
自动抢svn文件锁定,对于svn文件,多人使用时,为了降低等待时间,浪费时间资源,自动锁定svn文件。
SVN变化发送邮件(Python实现) 实现了svn一但有变化将发送邮件
SVN自动更新、提交脚本可以自由设置提交以及更新时间,带注释方便理解,附带使用教程。。。。。。。。。。。。。。。。。。。。
将根据自己实际环境修改后的post-commit.bat放于hooks目录; allrcps.lst中放缺省邮箱,也放于hooks目录; 在commit过程的log窗口中任一行顶头使用 mailto:all(使用缺省邮箱) 如果指定接收人: mailto:uesr1 user2 ...
利用脚本自动获取svn代码,并自动编译代码。提供了自动部署的方案。
SVN自动备份功能,按ReadMe配置下路径即可直接使用; 给公司SVN服务器进行代码文件和文档的自动备份; 设置Windows计划任务即可每天定时执行备份操作
SVN 邮件通知钩子脚本,需要配合blat.exe来发送邮件
本文档主要介绍在window下安装svn服务,通过apache访问与权限控制,以及svn钩子脚本的自动更新与提交格式限制和邮件转发功能
hudson svn maven 自动构建 deploy pom
linux 下svn 自动备份脚本
SVN_自动同步备份环境搭建笔记
svn 自动 commit 的实现 , 详见 博文 “svn 自动 commit 的实现”