Subversion 与 Mantis 整合作法

本文介绍如何通过配置实现Mantis缺陷跟踪系统与Subversion版本控制系统之间的自动化集成。具体步骤包括设置特殊用户、正则表达式匹配及脚本编写等,以确保每次Subversion提交时能自动更新Mantis中的相应问题状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mantis 有张贴一个新的 Issue , 与这个 Issue 相关的 Subversion 更动纪录可以自动回写至 Mantis 这个 Issue 内的 Bug 笔记内.

  • Mantis Subversion 都安装在相同的主机上 Subversion 主机可以透过 ssh 不需输入密码方式登入 Mantis 主机
  • Mantis 版本为 1.0.7 安装在 /var/www/html/mantis
  • Subversion 版本为 1.4.3-1
  • 建立 svnbot 这个特殊的 userid
  • 存取权限设定为开发者 (如果有多个项目, 每个项目都要授与 svnbot 这个权限)

vi /var/www/html/mantis/config_inc.php

:

:

        #Source Control

        $g_source_control_account = 'svnbot';

        $g_source_control_regexp = '/\b(?:bug|issue|mantis)\s*[#]{0,1}(\d+)\b/i';

        $g_source_control_set_status_to = RESOLVED;

        $g_source_control_set_resolution_to = FIXED;

        $g_source_control_fixed_regexp = '/\bfix(?:ed|es)\s+(?:bug|issue|mantis)?\s*[#]{0,1}(\d+)\b/i';

:

  • 设定 svnbot 为这个整合的 mantis 内特殊 user
  • 只要 SubVersion 内的纪录出现 bug issue mantis #编号 表示整合 Mantis 内的 Issue # Bug 笔记
  • 只要 SubVersion 内的纪录出现 fixed fixes + bug issue mantis #编号 表示整合 Mantis 内的 Issue # Bug 笔记外, 更会将 issue 状态改成已修正解决

直接执行以下的命令, 可以在 mantis 内的 Issue#2 新增 Bug 笔记

php /var/www/html/mantis/core/checkin.php <<< "Test issue #2 by svnbot."

直接执行以下的命令, 可以在 mantis 内的 Issue#2 新增 Bug 笔记以及将问题状态更改为以解决

php /var/www/html/mantis/core/checkin.php <<< "Test fixed issue #2 by svnbot."

vi /var/www/svn2mantis.pl

#!/usr/bin/perl

#

# 上午 11:15 2007年6月22

# Jonathan Tsai

# Ver 1.10

#

# 自动将 svn 讯息写入 mantis 纪录内

#

# 参考 http://www.ichiayi.com/trywiki/tech/svnmantis 的说明方式

# script. 需配合:

#  1. /var/www/svn/xxxrepos/hooks/post-commit 一起使用

#  2.apache user 可使用 ssh 免密码登入 Mantis 主机 主机与 Mantis 主机不同时需要

#

# 1.00 (2007/3/26) 第一版启用

# 1.01 (2007/3/26) 增加 commit 后自动整合的说明

# 1.10 (2007/6/22) 增加 远程登入 Mantis 主机功能设定

#

 

$prgname = substr($0, rindex($0,"/")+1);

$ver = "1.10 (2007/6/22)";

# $sshcmd 设为空字符串表示 SVN Mantis 安装在相同主机

$sshcmd = "";

# 否则应该输入由 svn 主机免密码登入 Mantis 主机的命令列

#$sshcmd = "/usr/bin/ssh jonathan@10.10.10.96";

 

# 读取参数数据

$REPOS=$ARGV[0];

$REV=$ARGV[1];

 

# 定义外部指令

$svnlook = "export LANG=zh_TW.UTF-8;/usr/bin/svnlook";

$phpcmd = "/usr/bin/php";

$checkincmd = "/var/www/html/mantis/core/checkin.php";

 

# 取得 svn 相关信息

$auth=`$svnlook author -r $REV $REPOS`;

$dt=`$svnlook date -r $REV $REPOS`;

$changed=`$svnlook changed -r $REV $REPOS`;

$log=`$svnlook log -r $REV $REPOS`;

$msg="Changeset [".$REV."] by $auth\n$dt\n$log\n$changed";

 

# 传送至 mantis

if (length($sshcmd)>0) {

        `$sshcmd $phpcmd -q $checkincmd <<< "$msg"`;

}

else {

        `$phpcmd -q $checkincmd <<< "$msg"`;

}

  • 假设 servercfg svn 存放在 /var/www/svn/servercfg
  • 假设 servercfg Reversion 644 讯息内容有出现 mantis #2 表示整合至 Mantis Issue #2

chmod a+x /var/www/svn2mantis.pl

/var/www/svn2mantis.pl /var/www/svn/servercfg 644

  • 这样就可以看到 Mantis Issue #2 内新增一个 Bug 笔记, 内容如下:

Changeset [644] by jonathan

 

2007-03-26 11:29:55 +0800 (, 26 3 2007)

 

svnlook 命令前加入 LANG=zh_TW.UTF-8 来测试整合 mantis 中文讯息问题.

 

mantis#2

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14780914/viewspace-413587/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14780914/viewspace-413587/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值