新聞中心
本節(jié)和大家一起學(xué)習(xí)一下如何集成SVN源碼管理和Mantis缺陷跟蹤 ,目前SVN用處越來越廣,它不僅可以在多個操作系統(tǒng)中搭建還可以跟多種程序整合,下面就讓我們一起來看一下集成SVN源碼管理和Mantis缺陷跟蹤的方法吧。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比灤平網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式灤平網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋灤平地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。
集成SVN源碼管理和Mantis缺陷跟蹤
首先在TortoiseSVN里設(shè)置一下項目的屬性,右鍵點(diǎn)擊目錄,屬性,在subversion一欄里,加入這幾個屬性
bugtraq:label = issue
bugtraq:url = http://%3cmantisserver%3e/mantis/view.php?id=%BUGID%
bugtraq:message = issue %BUGID%
bugtraq:warnifnoissue = true
到對應(yīng)的SVN版本庫里,找到hooks目錄,建立一個post-commit.bat文件,將以下內(nèi)容拷入:
REM Post-commit hook for MantisBT integration
rem REPOS svn版本庫的路徑
rem REV 版本信息
rem DETAILS_FILE 是版本庫的目錄,在版本庫目錄下建立一個log的目錄,用來存放日志
rem set PHPRC=D:EasyPHPapache 默認(rèn)會使用windows 目錄下的 php.ini 修改后,讀取 easyphpapach 目錄下
rem 拷貝了 checkin.php 進(jìn)行修改,重新命名 為 checkin_svn.php 如果有中文傳輸,需要修改 checkin_svn.php
rem 增加抓換函數(shù) $t_comment = mb_convert_encoding($t_comment, "utf-8","GB2312");
rem 修改位置在 “ foreach ( $t_issues as $t_issue_id ) { ”前面
rem mb_convert_encoding 此函數(shù)需要擴(kuò)展文件php_mbstring.dll的支持~~
rem $t_comment = iconv("UTF-8","GB2312//TRANSLIT",$t_comment); 據(jù)說這個編碼轉(zhuǎn)換效率更高
- SET REPOS=%1
- SET REV=%2
- SET DDETAILS_FILE=D:svnno1logsvnfile_%REV%
- SET LOG_FILE=D:svnno1logsvnfile_%REV%_Log
- set APR_ICONV_PATH=D:EasyPHPSubversioniconv
- set PHPRC=D:EasyPHPapache
- set path=%path%;D:EasyPHPphp5;D:EasyPHPSubversionbin;
- 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 修改明細(xì): >>%DETAILS_FILE%
- svnlook diff -r %REV% %REPOS%>>%DETAILS_FILE%
- rem php.exe .checkin_svn.php 信息文件日志文件
- php.exe D:EasyPHPwwwmantiscorecheckin_svn.php <%DETAILS_FILE%>%LOG_FILE%
- del %DETAILS_FILE%
- del %LOG_FILE%
***,修改mantis安裝目錄下的config_inc.php,加入以下內(nèi)容(mantis系統(tǒng)里要有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提交新版本時,同時發(fā)布內(nèi)容到對應(yīng)的缺陷跟蹤系統(tǒng)了。
比如,修改了一個源文件,svn commit時,在右上的issue欄目里輸入要提交到的具體的 issue/bug 編號,
然后在下面的message框內(nèi)輸入具體的描述,svn的hook就會自動往mantis里對應(yīng)的條目里寫入你提交時輸入的這些內(nèi)容。#p#
完成以上工作后集成SVN源碼管理和Mantis缺陷跟蹤使用過程中還存在一些問題
1、缺陷號沒有強(qiáng)制輸入,如果沒有輸入缺陷號,仍然可以提交
2、輸入了錯誤的缺陷號,系統(tǒng)仍然提交,但是缺陷系統(tǒng)中沒有相關(guān)的內(nèi)容
解決這個問題,需要在提交前,對缺陷信息進(jìn)行校驗。
一、創(chuàng)建 pre-commit.bat 校驗缺陷號
REM pre-commit.bat hook for MantisBT integration
set REPOS=%1
set TXN=%2
SET DETAILS_FILE=D:svnno1logsvnfile
SET LOG_FILE=D:svnno1logsvnfile_Log
set APR_ICONV_PATH=D:EasyPHPSubversioniconv
set PHPRC=D:EasyPHPapache
set path=%path%;D:EasyPHPphp5;D:EasyPHPSubversionbin;
rem 把注釋信息寫入到 DETAILS_FILE
svnlook log "%REPOS%" -t "%TXN%" >>%DETAILS_FILE%
rem 執(zhí)行checkin_svn_pre_commit.php 進(jìn)行校驗缺陷單號 是否在缺陷系統(tǒng)中存在,如果不存在,返回輸出信息到 log_file中
php.exe D:EasyPHPwwwmantiscorecheckin_svn_pre_commit.php <%DETAILS_FILE%>%LOG_FILE%
rem 校驗log_file中是否有內(nèi)容,如果有內(nèi)容,轉(zhuǎn)入到出錯提示
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
二、創(chuàng)建checkin_svn_pre_commit.php 到數(shù)據(jù)庫中校驗缺陷單信息
拷貝 checkin.php 內(nèi)容 新建checkin_svn_pre_commit.php 文件
刪除 # add note to each bug only once 之后的到 exit( 0 ); 內(nèi)容,修改為以下內(nèi)容
# 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 );
# 編碼轉(zhuǎn)換.
- $t_comment = mb_convert_encoding($t_comment, "utf-8","GB2312");
- # 判斷數(shù)據(jù)庫中的 缺陷單號是否存在
- 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 );
至此大部分的工作都已經(jīng)完成,但是還存在一些問題
1 新增等操作的時候,有時候提交沒有出現(xiàn)收入 issue 提示框,但是此時仍然需要輸入缺陷號
測試可以要求,在提交注釋的時候,按照 issue 1 形式手工寫入缺陷單號,即可提交。本節(jié)關(guān)于集成SVN源碼管理和Mantis缺陷跟蹤相關(guān)內(nèi)容介紹到這里。
【編輯推薦】
- SVN管理與應(yīng)用相關(guān)的資料參考手冊
- 技術(shù)分享 如何進(jìn)行SVN代碼管理
- 多項目中SVN權(quán)限管理精辟解析
- 如何實(shí)現(xiàn)SVN倉庫目錄規(guī)范化管理?
- 經(jīng)驗總結(jié):TortoiseSVN客戶端使用心得
網(wǎng)站名稱:如何進(jìn)行SVN源碼管理專家支招
分享網(wǎng)址:http://www.dlmjj.cn/article/cceggho.html


咨詢
建站咨詢
