完成以上工作后使用过程中还存在一些问题
1、缺陷号没有强制输入,如果没有输入缺陷号,仍然可以提交
2、输入了错误的缺陷号,系统仍然提交,但是缺陷系统中没有相关的内容
解决这个问题,需要在提交前,对缺陷信息进行校验
一、创建 pre-commit.bat 校验缺陷号
REM pre-commit.bat hook for MantisBT integration set REPOS=%1 set TXN=%2 SET DETAILS_FILE=D:\svn\no1\log\svnfile SET LOG_FILE=D:\svn\no1\log\svnfile_Log set APR_ICONV_PATH=D:\EasyPHP\Subversion\iconv set PHPRC=D:\EasyPHP\apache set path=%path%;D:\EasyPHP\php5;D:\EasyPHP\Subversion\bin; rem 把注释信息写入到 DETAILS_FILE svnlook log "%REPOS%" -t "%TXN%" >>%DETAILS_FILE% rem 执行checkin_svn_pre_commit.php 进行校验缺陷单号 是否在缺陷系统中存在,如果不存在,返回输出信息到 log_file中 php.exe D:\EasyPHP\www\mantis\core\checkin_svn_pre_commit.php <%DETAILS_FILE%>%LOG_FILE% rem 校验log_file中是否有内容,如果有内容,转入到出错提示 FOR /F "tokens=1,2* delims= " %%i in (%LOG_FILE%) do goto err del %DETAILS_FILE% del %LOG_FILE% exit 0 :err echo 缺陷单不存在,请正确填写缺陷单号,提交终止! 1>&2 del %DETAILS_FILE% del %LOG_FILE% exit 1 |
二、创建checkin_svn_pre_commit.php 到数据库中校验缺陷单信息
拷贝 checkin.php 内容 新建checkin_svn_pre_commit.php 文件
删除 # add note to each bug only once 之后的到 exit( 0 ); 内容,修改为以下内容 # add note to each bug only once $t_issues = array_unique( $t_issues ); $t_fixed_issues = array_unique( $t_fixed_issues ); $t_issues_svn = array_unique( $t_issues ); # 编码转换. $t_comment = mb_convert_encoding($t_comment, "utf-8","GB2312"); # 判断数据库中的 缺陷单号是否存在 foreach ( $t_issues_svn as $t_issue_id ) { $query = "SELECT * FROM mantis_bug_table WHERE bug_text_id='$t_issue_id'"; $result = db_query( $query ); $issues_raw_count = db_num_rows( $result ); if ($issues_raw_count == 0){ echo "$t_issue_id"; } } exit( 0 ); |
至此大部分的工作都已经完成,但是还存在一些问题
1 新增等操作的时候,有时候提交没有出现收入 issue 提示框,但是此时仍然需要输入缺陷号
测试可以要求,在提交注释的时候,按照 issue 1 形式手工写入缺陷单号,即可提交
几点说明:
1、
SET DETAILS_FILE=E:\svnrepo\log\svnfile_%REV%
指的是svn代码库的地址,在这个地址下 建立一个log的目录,根据自动生成文件
2、
$g_source_control_account = 'SVN';
需要在mantis建立一个 svn的 用户,这个用户要有添加注释的权利
3、php.exe E:\www\mantis\core\checkin.php <%DETAILS_FILE% >%LOG_FILE%
在使用easyphp的时候,注意php.ini 默认使用的是windows目录下的,
rem set PHPRC=D:\EasyPHP\apache 默认会使用windows 目录下的 php.ini 修改后,读取 easyphp\apach 目录下的配置文件
不然总是mysql 连接错误