MantisBT与SVN整合实战

Mantis是一个流行的开源缺陷管理系统

SVN是常见的SCM工具

日常的bug修复工作流程一般是:

  1. 修复某bug。
  2. SCM中提交针对某bug的更新。
  3. 缺陷管理系统中更新缺陷状态。

其中2、3步往往会,或者说应当提交相同的comment。因此事实上是重复信息提交,那么就存在优化的可能性。

SVN与git不同,是集中式的SCM工具,服务器有条件感知每次commit动作,事实上也有hooks接口提供。因此有了触发输出接口。

http://svnbook.red-bean.com/nightly/en/svn.reposadmin.create.html#svn.reposadmin.create.hooks

Mantis也提供了命令行的方式为指定bug添加note,更改状态。因此我们有了输入接口。

http://www.mantisbt.org/docs/master-1.2.x/en/administration_guide/admin.config.sourcecontrol.html

 

简单说,你需要提供一个脚本,svn服务器会在每次有commit动作时触发你的脚本,你的脚本需要处理这次commit的信息、改动,等等,然后转而提供相应的信息调用mantis的接口;mantis的接口会根据你提供的信息判断这次提交所针对的issue以及是否需要更改状态,并完成相应的更改。

一般而言,为了正常工作,需要约定commit的时候提交的message有一定的规律,比如包含Fixed Issue #000476,这样的字样。

这里有一个相当好的细节教程脚本示范,首先通用性非常好,其次它是用php写的——因为mantis本身是LAMP架构的,所以php一定安装了,不对系统有额外的假设。

当然还有一点点地方需要注意:

  1. mantis1.2里面checkin.php在scripts下面,而不是core下面。
  2. 请在文件首尾加上 #!/usr/bin/php(替换成你自己的路径) <?php以及?> 否则他给出的代码部分并不能直接执行的哦。
  3. 里面所有的\n我都我替换成了<br />,因为在浏览器里,\n可是会被忽略的。

当然你如果喜欢perl python甚至shell都亦无不可,只要你保证安装过了。


Comments

3 responses to “MantisBT与SVN整合实战”

  1. phoebezh Avatar
    phoebezh

    给个格式样例啊亲~~

  2. phoebezh :
    给个格式样例啊亲~~

    格式样例取决于配置mantis的config时候定义的正则表达式了~
    我用的是 ‘/\bfix(?:ed|es)\s+(?:bug|issue|task)?\s*[#]{0,1}(\d+)\b/i’

  3. phoebezh Avatar
    phoebezh

    居然被博主回复了好感动T.T

    duduzhu :

    phoebezh :
    给个格式样例啊亲~~

    格式样例取决于配置mantis的config时候定义的正则表达式了~
    我用的是 ‘/\bfix(?:ed|es)\s+(?:bug|issue|task)?\s*[#]{0,1}(\d+)\b/i’

Leave a Reply