整合SVN原始碼管理和Mantis缺陷跟蹤

2022-01-23 05:21:00 字數 3234 閱讀 5563

整合svn原始碼管理和mantis缺陷跟蹤 (windows)

首先在tortoisesvn裡設定一下專案的屬性,右鍵點選目錄,屬性,在subversion一欄裡,加入這幾個屬性

到對應的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 ) (\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 )

}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 連線錯誤 

原文:

整合SVN原始碼管理和Mantis缺陷跟蹤

整合svn原始碼管理和mantis缺陷跟蹤 windows 首先在tortoisesvn裡設定一下專案的屬性,右鍵點選目錄,屬性,在subversion一欄裡,加入這幾個屬性 到對應的svn版本庫里,找到hooks目錄,建立乙個post commit.bat檔案,將以下內容拷入 rem post c...

SVN原始碼洩露漏洞

svn subversion 是源 版本管理軟體,造成svn源 漏洞的主要原因是管理員操作不規範。在使用svn管理本地 過程中,會自動生成乙個名為.svn的隱藏資料夾,其中包含重要的源 資訊。但一些 管理員在發布 時,不願意使用 匯出 功能,而是直接複製 資料夾到web伺服器上,這就使.svn隱藏資...

SVN原始碼洩露漏洞

svn subversion 是源 管理軟體,造成svn源 漏洞的主要原因是管理員操作不規範。在使用svn管理本地 過程中,會自動生成乙個名為.svn的隱藏資料夾,其中包含重要的源 資訊。但一些 管理員在發布 時,不願意使用 匯出 功能,而是直接複製 資料夾到web伺服器上,這就使.svn隱藏資料夾...