Subversion 項(xiàng)目和用戶權(quán)限配置指南:
一、Subversion 的兩種使用方式:
1、Apache 站點(diǎn)方式;
2、本地命令行方式。
當(dāng)然,我們也可以通過客戶端來進(jìn)行訪問,但那也必須先建立上述
兩種訪問接口。
二、Apache 方式的配置
第一種方式我們需要安裝 Apache 服務(wù)器程序,同時(shí)需要安裝兩個(gè)模
塊:
mod_dav_svn 以及 mod_authz_svn
他們可以在 Subversion 的站點(diǎn)上找到,請?jiān)诟戒浿胁檎益溄印?br> 將所有需要的模塊安裝之后,我們必須編輯 Apache 的配置文檔,讓
其將我們要用的模塊裝載。一般來說,Apache 的配置文件是 httpd.conf
。位置一般在 Apache 安裝目錄下的 conf 子目錄中。而模塊我們一般放
在 modules 子目錄中。我們在配置文件 httpd.conf 中加入:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
這樣,Apache 就可以訪問 Subversion 的倉庫了。
三、Apache 方式中項(xiàng)目的發(fā)布
首先還是要先建立 Subversion 的項(xiàng)目,例如:
svnadmin create /home/svn/projectA
之后,在 httpd.conf 文件中加入:
DAV svn
SVNPath /home/svn/projectA
如果是想建立多個(gè)項(xiàng)目的話,可以使用另一種寫法:
DAV svn
SVNParentPath /home/svn
這樣,凡是在 /home/svn 目錄下的子目錄, Apache 都交給 Subversion
DAV 去處理。用戶即可以通過瀏覽器或者URL訪問 Subversion 管理的項(xiàng)
目了。
四、Apache 方式下的權(quán)限管理
首先,我們來創(chuàng)建一個(gè)用戶 robert。
由于是第一次創(chuàng)建用戶,我們必須同時(shí)創(chuàng)建一個(gè)用戶口令文件:
htpasswd -c authfile robert
這時(shí),會(huì)提示輸入用戶密碼以及確認(rèn)用戶密碼。htpasswd 程序會(huì)將
用戶密碼進(jìn)行散列運(yùn)算后保存在 authfile 中。創(chuàng)建第二個(gè)用戶時(shí),我們
就不必輸入 -c 開關(guān)了。
htpasswd authfile harry
如果想要?jiǎng)h除某個(gè)用戶,我們可以使用下列指令:
htpasswd -D authfile harry
這樣,harry 就被從 authfile 中刪除了。
這時(shí),Subversion 的權(quán)限管理問題就轉(zhuǎn)化為了 Apache 的權(quán)限管理問
題了。我們將前述的目錄配置做一下修改:
DAV svn
SVNPath /home/svn/projectA
AuthType Basic
AuthName "Subversion projectA"
AuthUserFile /home/svn/projectA/authfile
Require valid-user
這樣,對 projectA 訪問就必須提供 authfile 中記錄的用戶和正確密碼
才可以進(jìn)行了。
五、Apache 方式下的分組管理
有時(shí),我們希望能夠?qū)⒍鄠€(gè)開發(fā)人員編為一組,使用組的方式來為
項(xiàng)目設(shè)定權(quán)限。比如 projectA 項(xiàng)目只有屬于 groupA 的成員才可以存取
。下面我們來介紹其配置方法。
這里,我們就要用到 mod_authz_svn 提供的功能了。我們對
httpd.conf 中的目錄配置再做一次修改:
DAV svn
SVNParentPath /home/svn/
AuthzSVNAccessFile /home/svn/authz.conf
AuthType Basic
AuthName "Subversion projectA"
AuthUserFile /home/svn/projectA/authfile
Require valid-user
大家可以注意到,這里使用了另一個(gè)配置文件:authz.conf
他的大致結(jié)構(gòu)如下:
[groups]
everyone = robert, tommy, songjy, zhengyong, orcus, zhangq
groupA = robert, zhangq
groupB = orcus, tommy
[projectA:/]
@groupA = rw
@everyone = r
[projectB:/]
@everyone = r
@groupB = rw
Ok, 我想大家應(yīng)該已經(jīng)明白了基于組和項(xiàng)目的管理方法了。:)
附錄:
1、獲取最新安裝包:
http://summersoft.fay.ar.us/pub/subversion/latest/whitebox-el-3/bin/