需要解决的问题:
最近我们项目的代码审核员跟我提到,很多程序员在没有通知他的情况下就把代码提交到svn里面,这个也是我们一直想要解决的问题------代码提交后的相关人员实时通知。
关键词:
- Google Talk: 我们工作流专用的im工具,qq信息太繁杂,msn功能过多,用gtalk能够确保大部分信息都是来自工作中,有恰到好处的图片,文件传送功能,有邮件通知,永远无需删除的邮件的大容量邮箱,最棒的是基于开源的Jabber协议
- Ruby: 时下最火的动态语言,丰富开源社区的支持让编写各种应用得心应手
- Subersion: 开源界最好的版本控制工具
- Jabber::Simple :对googletalk最好的封装代码如其名简单之极,以下2行代码就可以达到登录发送消息的目的
-
im=Jabber::Simple.new("your_account@gmail.com","your_pass"
)
im.deliver("your_friend@gmail.com","hihowareyou")
- 需要run-> gem install xmpp4r-simple 安装ruby的jabber-simple库
方法:
subversion 的仓库目录下有个hooks 目录,默认会有一系列.tmpl文件,都是svn提供的回调方法的桩文件,我们需要做的是写一个post-commit.bat(windows系统下)文件调用我们的写的.rb ruby文件并把参数传递过去
代码1 post-commit.bat:
就这么一行,调用ruby文件,并把参数传递过去
E:\your_repos_root\hooks\post-commit.rb %1 %2
代码2 post-commit.rb:
require"xmpp4r-simple"
im =Jabber::Simple.new("your_sender_name@gmail.com","your_sender_pass" )
sleep(5 )
repos=ARGV[0 ]
revn=ARGV[1 ]
notifystring=repos+"'snewestrevisionis"+ revn
recepients=["recepient1@gmail.com","recepient2@gmail.com","recepient3@gmail.com" ]
ifim.connected?
recepients.each{ |notifymail|im.deliver(notifymail,"Somefileinyourreposhasjustbeencommitted!"+ notifystring)}
end
im.disconnect
im =Jabber::Simple.new("your_sender_name@gmail.com","your_sender_pass" )
sleep(5 )
repos=ARGV[0 ]
revn=ARGV[1 ]
notifystring=repos+"'snewestrevisionis"+ revn
recepients=["recepient1@gmail.com","recepient2@gmail.com","recepient3@gmail.com" ]
ifim.connected?
recepients.each{ |notifymail|im.deliver(notifymail,"Somefileinyourreposhasjustbeencommitted!"+ notifystring)}
end
im.disconnect
恩,代码就这么简单,你一旦提交svn就会调用你的bat脚本,发送通知,请确保您的your_sender_name@gmail.com在你所有recepients 的email的好友名单之内
本文介绍了一种利用Google Talk和Ruby脚本实现Subversion代码提交后自动通知相关人员的方法。通过编写简单的bat和rb脚本,当有新的代码提交时,系统会自动发送通知到指定的Google Talk账户。
380

被折叠的 条评论
为什么被折叠?



