| 一、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 |