Repository, 這對真實的環境使用上是有問題的, 因為大部分的情況是, 不同專案使用的
repository 有不同專案成員, 所以會有不同權限, 開發人員可以存取整個或部分專案內容, QA/QC
人員只能讀取專案內容, 不能寫入; 這篇就是要跟大家介紹 Subversion 的 Access Control。
在 Subversion 中要使用 Access Control 必須啟動 Apache 裡的模組 authz_svn, 指令如下:
sudo a2enmod authz_svn
修改 /etc/apache2/mods-available/dav_svn.conf
<Location /MyWebSite>
DAV svn
SVNPath /var/www/svn/MyWebSite
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/subversion/passwd
AuthzSVNAccessFile /etc/subversion/access_control.conf
Require valid-user
</Location>
新增 AuthzSVNAccessFile /etc/subversion/access_control.conf
檔案的目錄與名稱可自行更改, 不一定要是 /etc/subversion/access_control.conf
接著要重新啟動 Apache, 才可以使用, 指令如下:
sudo /etc/init.d/apache2 restart 或
sudo service apache2 restart
設定 Repository 的 Access Control, Subversion 的設定很直覺
[MyWebSite:/]
tom = rw
john = r
在 MyWebSite 的這個 Repository 從根(/) 以下, tom 有讀寫的權限, john 只有讀的權限。
[MyWebSite:/chunk/doc]
mary = rw
* = r
在 MyWebSite 的這個 Repository /chunk/doc 以下的目錄 mary 有讀寫的權限, 所有的人
都有讀的權限。
每個專案都要一個一個人加他的權限, 是很沒效率的方法, Subversion 可以用 groups 的方法,
可以比較有效設定。
要在檔案開頭的部分加入groups 的設定:
[groups]
QA = rita, richard
Team_A = tom, steve, kevin
[MyWebSite:/]
@QA = r
@Team_A = rw
john = r
QA 與 Team_A 都是群組, 接在後面的是成員, 在使用群組名稱時前面要加 @, 例如 @QA。
所有的使用者都必須是由 htpasswd 建立的。
注意: 修改 /etc/apache2/mods-available/dav_svn.conf 後必須重啟 Apache, 方可生效,
但修改 Access Control檔(本例為: /etc/subversion/access_control.conf) 無需重啟即可生效。
沒有留言:
張貼留言