`
timcuisw
  • 浏览: 20102 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

集成SVN源码管理和Mantis缺陷跟踪

阅读更多

文章源地址:http://www.cppblog.com/cloud/archive/2008/09/11/61606.aspx

要集成Mantis和SVN,需要几个工具:
SVN客户端,TortoiseSVN,下载地址: http://tortoisesvn.net/ 
SVN服务端,这个应该都有吧。
Mantis缺陷跟踪系统 http://www.mantisbt.org/


首先在TortoiseSVN里设置一下项目的属性,右键点击目录,属性,在subversion一栏里,加入这几个属性

bugtraq:label = issue
bugtraq:url = http://%3cmantisserver%3e/mantis/view.php?id=%BUGID%
bugtraq:message = issue %BUGID%
bugtraq:warnifnoissue = true

到对应的SVN版本库里,找到hooks目录,建立一个post-commit.bat文件,将以下内容拷入:

REM Post-commit hook for MantisBT integration

rem REPOS svn版本库的路径
rem REV 版本信息
rem DETAILS_FILE 是版本库的目录,在版本库目录下建立一个log的目录,用来存放日志
rem set PHPRC=D:\EasyPHP\apache 默认会使用windows 目录下的 php.ini 修改后,读取 easyphp\apach 目录下

rem 拷贝了 checkin.php 进行修改,重新命名 为 checkin_svn.php 如果有中文传输,需要修改 checkin_svn.php
rem 增加抓换函数 $t_comment = mb_convert_encoding($t_comment, "utf-8","GB2312"); 
rem 修改位置在 “ foreach ( $t_issues as $t_issue_id ) { ”前面
rem mb_convert_encoding 此函数需要扩展文件php_mbstring.dll的支持~~  
rem $t_comment   = iconv("UTF-8","GB2312//TRANSLIT",$t_comment);  据说这个编码转换效率更高

 

SET REPOS=%1
SET REV=%2
SET DETAILS_FILE=D:\svn\no1\log\svnfile_%REV%
SET LOG_FILE=D:\svn\no1\log\svnfile_%REV%_Log
set APR_ICONV_PATH=D:\EasyPHP\Subversion\iconv
set PHPRC=D:\EasyPHP\apache
set path=%path%;D:\EasyPHP\php5;D:\EasyPHP\Subversion\bin;


echo ****** Source code change ******>>%DETAILS_FILE%

echo SVN 修改人: >>%DETAILS_FILE%
svnlook author -r %REV% %REPOS%>>%DETAILS_FILE%

echo SVN 修改日期: >>%DETAILS_FILE%
svnlook date -r %REV% %REPOS%>>%DETAILS_FILE%

echo SVN 版本:  >>%DETAILS_FILE%
echo %REV%>>%DETAILS_FILE%

echo SVN 提交注释: >>%DETAILS_FILE%
svnlook log -r %REV% %REPOS%>>%DETAILS_FILE%

echo SVN 修改明细: >>%DETAILS_FILE%
svnlook diff -r %REV% %REPOS%>>%DETAILS_FILE%


rem php.exe .\checkin_svn.php 信息文件日志文件
php.exe D:\EasyPHP\www\mantis\core\checkin_svn.php <%DETAILS_FILE%>%LOG_FILE%

del %DETAILS_FILE%
del %LOG_FILE%


最后,修改mantis安装目录下的config_inc.php,加入以下内容(mantis系统里要有SVN用户):

 $g_source_control_notes_view_status = VS_PUBLIC;
 $g_source_control_account = 'SVN';
 $g_source_control_set_status_to = OFF;
 $g_source_control_regexp = "/\bissue [#]{0,1}(\d+)\b/i";

完成这些步骤后,就可以在SVN提交新版本时,同时发布内容到对应的缺陷跟踪系统了。

 比如,修改了一个源文件,svn commit时,在右上的issue栏目里输入要提交到的具体的 issue/bug  编号,
 然后在下面的message框内输入具体的描述,svn的hook就会自动往mantis里对应的条目里写入你提交时输入的这些内容。

完成以上工作后使用过程中还存在一些问题
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 形式手工写入缺陷单号,即可提交

分享到:
评论

相关推荐

    使用开源软件 Mantis 实施缺陷跟踪的成功实践

    4. **版本控制**:Mantis支持与源代码版本控制系统(如Git)集成,便于追踪问题修复与代码更改的关系。 5. **通知机制**:系统可以自动发送电子邮件通知,提醒相关人员关注问题状态的更新。 6. **权限管理**:Mantis...

    windows下开源缺陷跟踪系统Mantis

    Mantis可以与其他软件开发工具集成,如源代码管理系统(Git、SVN等)、持续集成工具(Jenkins、Travis CI等),以实现更高效的开发流程。 扩展与定制: Mantis有丰富的插件和主题库,你可以根据需要安装扩展功能,...

    BUG管理系统mantis-1.2.5

    - **源代码管理**:Mantis能够与常见的版本控制系统(如Git、SVN)集成,方便查看问题代码。 - **持续集成**:可以通过API与其他持续集成工具(如Jenkins)联动,实现自动化测试和缺陷报告。 5. **安装与配置** ...

    Mantis BUG管理系统

    Mantis BUG管理系统是一款开源的、基于Web的缺陷跟踪系统,专为软件开发团队设计,用于管理项目中的错误、缺陷和问题。它提供了直观的用户界面,使得团队成员能够有效地报告、跟踪以及解决软件开发过程中的各种问题...

    Mantis1.2.18问题管理系统官方原版-源码

    Mantis是一款开源、免费的问题跟踪系统,主要用于软件开发过程中缺陷管理和项目管理。1.2.18是Mantis的一个稳定版本,提供了丰富的功能和改进,适用于小型到中型的项目团队。在这里,我们将深入探讨Mantis 1.2.18的...

    mantis

    Mantis是一款广受欢迎的开源软件,专为项目管理和缺陷跟踪而设计。它的核心功能在于帮助团队有效追踪和解决软件开发过程中的错误和问题,从而提高工作效率。作为一个专业的IT大师,我将详细介绍Mantis的主要特点、...

    mantis1.1.4

    10. **源代码开放**:作为开源软件,Mantis 允许用户查看和修改源代码,根据自身需求定制功能,或者向社区贡献代码。 总的来说,Mantis 1.1.4 是一个功能强大、灵活且易于使用的缺陷管理工具,对于想要提高软件质量...

    Mantis的安装过程

    Mantis是一款开源的、基于Web的bug跟踪系统,被广泛应用于软件开发项目中,以协助团队管理缺陷报告、任务分配和进度跟踪。本文将详细介绍Mantis的安装过程,并结合"新的bug跟踪系统的简介及使用.doc"文档,探讨其...

    mantis-1.1.4

    4. **版本控制集成**:Mantis可以与常见的版本控制系统如Git、SVN等集成,允许直接从bug报告中链接到源代码的特定更改,便于定位和修复问题。 5. **邮件通知**:系统支持自动发送邮件通知,当有新的bug报告、状态...

    mantis1.2.0a1

    2. **功能增强**:Mantis 1.2.0a1可能增加了对多项目管理的支持,允许用户同时跟踪多个项目的缺陷和任务。此外,可能还添加了新的报告和统计功能,以便更好地分析和理解项目状态。 3. **安全性和稳定性提升**:作为...

    mantisbt-1.2.1.zip

    2. **任务管理**:除了缺陷,MantisBT还支持创建和管理项目中的任务,帮助团队规划和追踪工作进度。 3. **版本控制**:与各种版本控制系统(如Git、SVN等)集成,可以查看代码变更与缺陷修复之间的关联。 4. **...

    mantis1.1.6

    MantisBT是一款开源的、基于Web的缺陷跟踪系统,它被广泛用于软件开发项目中,以管理和追踪软件问题和错误。MantisBT 1.1.6是该系统的早期版本,专为Linux操作系统设计。在本文中,我们将深入探讨MantisBT 1.1.6的...

    mantisbt-1.2.15.tar.gz

    MantisBT是一个开源的、基于Web的缺陷跟踪系统,它被广泛用于软件开发项目中,以管理和追踪软件的错误和缺陷。"mantisbt-1.2.15.tar.gz"是一个压缩包文件,其中包含了MantisBT 1.2.15版本的所有源代码和相关资源。这...

    jenkins+maven+nexus+mantisBug

    **MantisBug** 是一个开源的错误跟踪系统,用于记录和管理项目中的缺陷或问题。它提供了用户友好的界面,允许团队成员报告问题、分配任务、跟踪修复状态,并进行沟通。MantisBug可以帮助团队提高效率,确保问题得到...

Global site tag (gtag.js) - Google Analytics