用ruby Jabber::Simple的 封装 写subversion的提交自动 GoogleTalk通知器

需要解决的问题:

最近我们项目的代码审核员跟我提到,很多程序员在没有通知他的情况下就把代码提交到svn里面,这个也是我们一直想要解决的问题------代码提交后的相关人员实时通知。

关键词:

  1. Google Talk: 我们工作流专用的im工具,qq信息太繁杂,msn功能过多,用gtalk能够确保大部分信息都是来自工作中,有恰到好处的图片,文件传送功能,有邮件通知,永远无需删除的邮件的大容量邮箱,最棒的是基于开源的Jabber协议
  2. Ruby: 时下最火的动态语言,丰富开源社区的支持让编写各种应用得心应手
  3. Subersion: 开源界最好的版本控制工具
  4. Jabber::Simple :对googletalk最好的封装代码如其名简单之极,以下2行代码就可以达到登录发送消息的目的
  • im = Jabber::Simple. new ( " [email protected] " , " your_pass " )
    im.deliver(
    " [email protected] " , " 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 ( " [email protected] " , " your_sender_pass " )
sleep(
5 )

repos
= ARGV[ 0 ]
revn
= ARGV[ 1 ]

notifystring
= repos + " 'snewestrevisionis " + revn
recepients
= [ " [email protected] " , " [email protected] " , " [email protected] " ]

if im.connected ?
recepients.each{
| notifymail | im.deliver(notifymail, " Somefileinyourreposhasjustbeencommitted! " + notifystring)}
end
im.disconnect

恩,代码就这么简单,你一旦提交svn就会调用你的bat脚本,发送通知,请确保您的[email protected]在你所有recepients 的email的好友名单之内

你可能感兴趣的:(subversion)