所有項目的根目錄(這個裡面存很多版本庫用svnadmin創建的,不是普通的dir文件夾)
/var/www/svnrepos
根目錄下存密碼文件和用戶讀寫權限分配文件(這兩個文件是建立文件夾也就是項目根目錄的時候建的空文件)
accessfile passwdfile
然後是項目也就是庫的結構,具體項目例子
branches 為分支開發目錄
tags tag存檔目錄(不允許修改)
trunk 主開發目錄
conf 存放版本庫所用配置文件的目錄
dav 供mod_dav_svn使用
db 版本數據存儲目錄
format 存儲一個整數的文件,此整數代表庫層次結構版本
hooks 存放版本庫勾子目錄
locks 存儲庫鎖目錄,用來跟蹤庫的訪問者
README.txt
項目裡面要修改的文件
第一個:就是hooks裡面的post-commit
#!/bin/sh
chown -R apache:apache /var/www/html/ebay_erp
export LANG=zh_CN.UTF-8
/usr/bin/svn update --username=111111 --password=111111 svn://localhost/1erp/trunk /var/www/html/erp
第二個:/var/www/svnrepos/erp/conf/svnserve.conf
anon-access = none
auth-access = write
修改:
vi /etc/httpd/conf.d/subversion.conf
內容:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
#
# Example configuration to enable HTTP access for a directory
# containing Subversion repositories, "/var/www/svn". Each repository
# must be both:
#
# a) readable and writable by the 'apache' user, and
#
# b) labelled with the 'httpd_sys_content_t' context if using
# SELinux
#
#
# To create a new repository "http://localhost/repos/stuff" using
# this configuration, run as root:
#
# # cd /var/www/svn
# # svnadmin create stuff
# # chown -R apache.apache stuff
# # chcon -R -t httpd_sys_content_t stuff
#
<Location /svnrepos>
DAV svn
SVNParentPath /var/www/svnrepos
AuthType Basic
AuthName "please Login Svn System"
AuthUserFile /var/www/svnrepos/passwdfile
AuthzSVNAccessFile /var/www/svnrepos/accessfile (如果使用了 AuthzSVNAccessFile 設置,就無法在浏覽器裡顯示根目錄下的 svn repository list,即當你嘗試訪問http://localhost/svn 時,就會出現下列錯誤:You don't have permission to access /svn/ on this server)
Require valid-user
SVNListParentPath on
</Location>
注釋:
<Location /svn> (apache下的位置)http://localhost/svn用來這樣訪問的
DAV svn
SVNPath /home/svn/myproject (指明資源庫的路徑)
或
SVNParentPath /home/svn (如果有多個庫,多庫和單庫的區別,使用該選項)*
SVNListParentPath on (打開這個選項可以列出ParentPath下面的所有庫)
AuthType Basic (認證類型為基本認證 )
AuthName "Subversion Repository" (認證名稱,將在IE界面彈出一個對話框,其標題)
AuthUserFile /etc/apache2/dav_svn.passwd (認證密碼文件)
# AuthzSVNAcessFile /etc/apache2/dav_svn.authz (目錄權限文件)
Require valid-user (要求驗證用戶,即不能匿名訪問)
SSLRequireSSL 禁用無 SSL的 http訪問方式,而只允許通過 https訪問**********
</Location>
多庫
一般都是指在一個根目錄下創建多個子目錄,每個子目錄作為一個庫,但這些庫又共用根目錄(也可以是其它目錄)下的配置文件
優點:不需要修改 apche 的配置文件,也不需要重新啟動 apache ,每次要添加新的庫的時候只要在根目錄下創建一個新的子目錄,然後修改根目錄下的配置文件就可以了,並且各個庫的版本號是獨立的 。
缺點:如果不是 apache 的服務器,可能看不到根目錄,也就是說不能浏覽到所有的庫列表,另外就是備份、配置起來要復雜些。
單庫
一個根目錄就是一個庫,下面的子目錄對應不同的項目,只有一個配置文件,所以對項目的控制也就是對子目錄的控制。
優點:不需要修改 apche 的配置文件,也不需要重新啟動 apache,每次要添加新的庫的時候只要在根目錄下創建一個新的子目錄,然後修改根目錄下的配置文件就可以了,並且備份起來方便。
缺點:版本號更新不是獨立的,所有的項目共用一個版本號,只要有一個項目更新,版本號就會更新,不利於單獨項目的版本控制和操作。
多個單庫
則是每個目錄是一個庫,對應一個項目,包括一個配置文件。
優點:把目錄、配置、版本號與項目統一起來
缺點:添加庫的時候需要修改 apache 的配置文件