SVN與bugzilla整合

來源:互聯網
上載者:User
一、Linux下subversion安裝配置

1、安裝subversion及配置

安裝subversion
系統共分為:
SubVersion,從 http://subversion.tigris.org/ 下載,是實現服務系統的軟體。

1)安裝apache伺服器時所需的配置
./configure時所需要增加的選項
–prefix=/usr/local/apache
–mandir=/usr/share/man
–enable-dav –enable-so
–enable - dav – fs
以便svn的安裝及配置
然後輸入make & make install進行安裝

2)安裝subversion
下載包subversion-1.4.6.tar.gz
網址如下: http://subversion.tigris.org/downloads/subversion-1.4.6.tar.gz
安裝之前進行配置
./configure --with-apxs=/usr/local/apaceh/bin/apxs
--prefix=/usr/local/subvertsion
--with-apr=/usr/local/apache
--with-apr-util=/usr/local/apache
配置之後進行安裝,#make install&install

3)建立新目錄/home/svn/repos,作為Repository的主目錄.使用建立工作區域, 對該目錄進行初始化
#svnadmin create /home/svn/repos
該目錄下產生版本控制需要的資料庫結構。

4)建立svn 伺服器的工作根目錄
#svnserve -d –r /home/svn/repos
就可以建立以/home/svn/repos為工作根目錄的 svn 伺服器。

5)檢查服務是否正常
#ps –ef | grep svnserve
如果顯示svn登入資訊,則啟動svn伺服器成功。
2、安裝SVN+Apache
(1)首先,SVN模組載入上,修改Apache的設定檔httpd.conf:
LoadModule dav_svn_module /usr/local/apache/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/local/apache/modules/mod_authz_svn.so

然後配置倉庫:
<Location "/home/svn/repos">
DAV svn
SVNParentPath /home
</Location>

然後,配置驗證方式:
這裡使用Apache的驗證方式:

htpasswd -cm /home/svn/svn-auth-file yuexi.liu@gdechina.com
然後,會提示輸入密碼,這裡就加入了一個使用者了。

然後修改配置:
<Location "/home/svn/repos">
DAV svn
SVNParentPath /home/svn
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /home/svn/svn-auth-file
Require valid-user
AuthzSVNAccessFile /home/svn/svn-access-file
</Location>

(2)編輯svn-access-file檔案

下面,就要寫這個svn-access-file檔案了,它是用來控制使用者訪問倉庫的許可權的,我們把說明寫在後面
[repos:/] //這表示,倉庫repos的根目錄下的存取權限
yuexi.liu@gdechina.com=rw // repos倉庫yuexi.liu@gdechina.com使用者具有讀和寫入權限
#[/] // 這個表示在所有倉庫的根目錄下
#* = r // 這個表示對所有的使用者都具有讀許可權
#[groups] // 這個表示群組設定
#repos-developers = yuexi.liu@gdechina.com,user1 // 這個表示某群組裡的成員
#[repos:/]
#@repos-developers = rw // 如果在前面加上@符號,則表示這是個群組使用權限設定
將這個設定完成後。重啟Apache,就可以通過瀏覽器下進行瀏覽http://192.168.1.222/repos

(3) 串連到倉庫的方法URL

http://192.168.1.222/repos,採用了Apache作為伺服器的話就可以以這種形式訪問,許可權由Apache設定。
svn://192.168.1.222/repos,採用了svnserve作為伺服器的話那麼就可以採用這種形式訪問,它是一種基於TCP/IP的訪問方式。許可權由倉庫的設定檔設定。

二、在svn中利用mod_auth_mysql使用bugzilla帳號

Svn使用apache的許可權機制,意味著為每一個使用者建立使用者號和密碼,使用htpasswd
配置apache使用bugzilla使用者表格來鑒別使用者,需使用apache模組”mod_auth_mysql”
Bugzilla在profiles表中儲存使用者資料,使用者id存在login_name列中,密碼存在cryptpassword列中。密碼使用命令crypt來加密,全隨意建立一個密碼。
Profiles表格中還有一列名為"disabledtext",如果這個域不為空白,那麼使用者就是無效的,所以要設定svn的進入許可權。

1、 下載mod_auth_mysql

使用#yum install mod_auth_mysql  此處存在一個路徑問題
此處自動在/etc/httpd/conf.d/檔案夾中建立auth_mysql.conf
該檔案是在這行命令下下載的
LoadModule mysql_auth_module /usr/local/mysql/lib/mysql/.libs/mod_auth_mysql.so
重新修改apache設定檔httpd.conf
在其中加入
#Subversion
LoadModule dav_svn_module /usr/local/apache/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/local/apache/modules/mod_authz_svn.so
LoadModule mysql_auth_module /usr/local/mysql/lib/mysql/.libs/mod_auth_mysql.so
<Location "/home/svn/repos">
DAV svn
SVNParentPath /home/svn
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /home/svn/svn-auth-file
Require valid-user
AuthzSVNAccessFile /home/svn /svn-access-file

AuthMySQLHost localhost
AuthMySQLUser bugs
AuthMySQLPassword 123
AuthMySQLDB bugs
AuthMySQLUserTable profiles
AuthMySQLNameField login_name
AuthMySQLPasswordField cryptpassword
AuthMySQLUserCondition disabledtext=""
</Location>

/usr/local/apache/bin/axps –c –L /usr/local/mysql/lib/mysql –I /usr/local/mysql/include/mysql –lmsqlclient –lm lz /usr/local/mysql/lib/mod_auth_mysql.c

2、WebSVN: Subversion倉庫瀏覽授權

為WebSVN (http://websvn.tigris.org/)
將WebSVN設定為apache可以訪問的目錄, 在httpd.conf檔案中加入WebSVN中, 包括mod_auth_mysql在bugzilla中的授權,並且在WebSVN中編輯檔案”include/config.inc”, 如下:

$config->parentPath(“/path/to/svn/repositories”)
$config->userAuthenticationFile(“/path/to/svn/accessffile”)

在wsvn.php檔案中配置如下:
$localwebsvnhttp = "/websvn";
$localwebsvnreal = "/var/www/websvn";

修改config.inc檔案
$config->setTemplatePath(“$localwebsvnreal/templates/BlueGrey/”)
在WebSVN檔案夾中加入檔案”.htaccess”來確保使用者不能瀏覽到設定檔,或者他們沒有許可權訪問的其他許可權。

3、使用BugTraq和scmbug將subversion與bugzilla整合

現在subversion與bugzilla可以共用帳戶並且WebSVN允許授權使用者瀏覽資料倉儲,需使用bugtraq特性與TortoiseSVN工具和scmbug整合服務

(1)Bugtraq

Bugtraq是運用標準方式與svn用戶端整合,以及第三方bug跟蹤系統。
Bugtraq:message
1. 提交時這個設定為用戶端提供一個bug_id
2. Bug_id加在提交日誌資訊中需使用指定格式
將”bugtraq:message”設定為”Issue:%BUGID%”,這個域是如何指定bug_id在哪個位置插入,

Bugtraq:url
將此物性設定為http://my.server.com/bugzilla/show_bug.cgi?id=%BUGID%指定一種格式來建立URL。用來為用戶端建立一個超連結來連結bug跟蹤系統。

屬性設定如下:---------name : bugtraq:urlvalue : (string)
此項值為bug跟蹤工具,URL字串必須包含"%BUGID%"---------name : bugtraq:warnifnoissue
value : "true"/"yes" or "false"/"no"
若值設定為"true",那麼用戶端就會警告使用者是否版本文字框為空白。---------基本整合的屬性設定:---------name : bugtraq:label
value : (string)
此項值是用戶端用來作為GUI標籤來描述文字框來顯示使用者需要在什麼位置添入版本號碼。如果沒有設定此值的話,就會預設,如"Bug-ID / Issue-Number :"。設定標籤的字元長度為20-25以下。------------------name : bugtraq:message
value : (string)
如果設定此項屬性,那麼用戶端應該顯示在提交視窗的文字框中。此項屬性的字元是用戶端用來為日誌資訊建立一個額外的行。字元必須包含"%BUGID%"在使用者提交日誌之前來代替版本號碼。用戶端將加入產生的字元作為日誌中的新的一行,使用者輸入:logmessage + "\n" + resultstring。如果bugtraq:append設定為"false",那麼日誌就被定義為resultstring + "\n" + logmessage,the log message 定義為resultstring + "\n" + logmessage用戶端必須確認字元不是多行的,如果輸入多於一行的版本號碼,用戶端必須確認在逗號之前沒有空白字元。並且整個版本號碼必須是平衡的。注意:---------name : bugtraq:number
value : "true"/"yes" or "false"/"no"
如果此屬性設定為 "false", 那麼用戶端就允許在文字框中輸入任意符號。只有逗號','例外,用來分隔多版本。 用戶端必須說明檔案框是空的時候,如沒有給出版本號碼,那麼所有的提交都會分配到一個版本號碼上。 注意:如果設定屬性bugtraq:logregex,且該屬性設定為false,那麼用戶端必須使用regex使建立後的字元填加到日誌後來檢驗bug ID是否有效。------------------name : bugtraq:append
value : "true"/"yes" or "false"/"no"
如果設定為"false",那麼bugtraq:message部分插入日誌的最頂端,若設定為"yes"或者不設定的話,該部分就自動附加在底端。---------其他屬性的配置:---------name : bugtraq:logregexvalue : (string)此屬性包含一個或兩個標準運算式,並用新的一行區分。如果只設定一個運算式,那麼空的bug ID的必須與組中的regex字元匹配。如:[Ii]ssue #?(\d+) 如果兩個運算式均設定,那麼第一個運算式用來尋找與bug ID相關或者包含不止bug ID的字元,例如"Issue #123" 或 "resolves issue 123"

(2)Scmbug

Scmbug串連軟體目錄管理SCM和bug跟蹤系統,在bug跟蹤方面支援bugzilla和Mantis
:http://www.mkgnu.net/?q=scmbug
SCMBUG_RELEASE_0-23-4.tar.gz
解包進行安裝,安裝路徑為/usr/local/scmbug,在scmbug檔案夾中變更檔daemon.conf,添加bugzilla的位置的所在位置/usr/local/apache/htdocs/bugzilla
安裝Glue,scmbug內建一個命令列工具名為“scmbug_install_glue”來安裝此模組。之後,需更改glue.conf檔案指明svn倉庫的位置/home/svn/repos
最主要的是必須修改檔案glue.conf中標準運算式來解析bugID,由於設定bugtraq:message" = "Issue: %BUGID%"
設定為:
bugid_regex => ‘.*Issue:\s*(.*?)$’,
bugid_split_regex => ‘,\s+#|\s+#|,|\s+’,
log_regex => ‘^(([^\r\n]|[\r\n])*)Issue:.*$’
修改presence_of_bug_ids屬性為optional,否則沒有bug_id不能提交申請。

著作權聲明:原創作品,允許轉載,轉載時請務必以超連結形式標明文章 原始出處 、作者資訊和本聲明。否則將追究法律責任。http://xiximoon.blog.51cto.com/660072/131084

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.