SVN--subversion的五种访问方式
SVN的訪問方式
Subversion 文件倉庫可以通過許多不同的方式進行訪問(Check Out,簽出)——通過本地硬盤,或者通過各種網(wǎng)絡協(xié)議。無論如何,文件倉庫的位置總是使用 URL 來表示。下表顯示了不同的 URL 模式對應的訪問方法:
| 模式 | 訪問方法 |
| file:/// | 直接訪問本地硬盤上文件倉庫 |
| http:// | 通過 WebDAV 協(xié)議訪問支持 Subversion 的 Apache 2 Web 服務器 |
| https:// | 類似 http://,支持 SSL 加密 |
| svn:// | 通過自帶協(xié)議訪問 svnserve 服務器 |
| svn+ssh:// | 類似 svn://,支持通過 SSH 通道 |
這里只介紹http://的多庫訪問,因為很有代表性,已經(jīng)包含所有的基本配置了,特此記錄日志。
實現(xiàn)功能:
MD5加密(使用apache的htpasswd的-m加密)
http://訪問 (apache的mod_dav_svn.so 和mod_authz_svn.so)
多版本庫共存 和易于管理的獨立配置文件(subversion.conf)
庫文件內的任意一個文件的權限操作(這是單svn://無法達到的)
不需要開放多余端口
---------------------------------------------------安裝-----------------------------------------------------
yum install subversion httpd mod_dav_svn
#只需要以上的三個,配置源,下載最新的。這里的apache可以因人而異自行修改,主要文件還是Apache的mod_dav_svn模塊的支持
--------------------------------------------------配置----------------------------------------------------
首先說明庫的根目錄是/home/svn,在根目錄下會創(chuàng)建多個庫
#第一個庫:
mkdir /home/svn/datesvn
svnadmin create /home/svn/datesvn
#第二個庫:
mkdir /home/svn/datesvn1
svnadmin create /home/svn/datesvn1
#這里為了統(tǒng)一管理,所有的配置在第一個庫datesvn里配置,然后通過apache來指向配置文件位置,就不用寫兩份配置文件了
vi /home/svn/datesvn/authz
[groups] #通過分配群組來實現(xiàn)目錄訪問權限
admin = ch
docs = test2
#datesvn的庫
[datesvn:/]
ch = rw
[datesvn:/Test] #這里是datesvn庫里邊的Test文件夾的權限
@docs = r # @指的是代表群組docs所有成員,上邊的是獨立一個成員ch
#datesvn1的庫
[datesvn1:/] # 這里[/] [datesvn:/] [datesvn1:/]其實分別意思為,/home/svn,/home/svn/datesvn/,/home/svn/datesvn,當然這里是不推薦放出[/]目錄的
@docs = rw
#權限有r,w,rw,還有none,最好不要做出* =r或者* = rw等的事情。如果你配過防火墻,那么應該知道原則是先封閉,后開放。那么為了更加安全,默認subserve是只有寫在配置文件的目錄才能被訪問,沒有寫上去的不能被訪問。也就是說,默認不寫東西是無法被訪問的,也就是封閉的,那么再寫下目錄和權限,這樣的話就不會有沖突的訪問規(guī)則。例如根目錄下你的默認訪問權限是r,也就是* = r,那么你認為就算你后來設置w的時候不會有問題嗎?我反正是無論如何都是寫不進的,只要有* =r。有人這么寫過,不過我想不通他這么寫的原因,或許就是個可讀庫吧
vi /etc/httpd/conf.d/subversion.conf
<Location />
DAV svn
SVNParentPath /home/svn/ #這里是設置根目錄,也就是所有庫文件的根目錄例如/home/svn/datesvn和/home/svn/datesvn1的根目錄就是/home/svn
# SVNPath /home/svn/datesvn #這里是設置單個庫的目錄,如果只有一個庫,可以用這個
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# Require SSL connection for password protection.
# SSLRequireSSL
AuthType Basic
AuthName "驗證信息" #svn連接時的提示信息,可手動修改
AuthzSVNAccessFile /home/svn/datesvn/conf/authz #文件訪問的權限配置文件,需要制定文件,官網(wǎng)說明沒有這項,需要自己補上
AuthUserFile /home/svn/datesvn/conf/passwd #指定密碼文件
Require valid-user #只有認證用戶才可以訪問,類似防火墻的拒絕
# </LimitExcept>
</Location>
/*
如果你樂意,也可以這樣做
<Location /datesvn>
DAV svn
#SVNParentPath /home/svn/ #這里是設置根目錄,也就是所有庫文件的根目錄例如/home/svn/datesvn和/home/svn/datesvn1的根目錄就是/home/svn
SVNPath /home/svn/datesvn #這里是設置單個庫的目錄,如果只有一個庫,可以用這個
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# Require SSL connection for password protection.
# SSLRequireSSL
AuthType Basic
AuthName "驗證信息" #svn連接時的提示信息,可手動修改
AuthzSVNAccessFile /home/svn/datesvn/conf/authz #文件訪問的權限配置文件,需要制定文件,官網(wǎng)說明沒有這項,需要自己補上
AuthUserFile /home/svn/datesvn/conf/passwd #指定密碼文件
Require valid-user #只有認證用戶才可以訪問,類似防火墻的拒絕
# </LimitExcept>
</Location>
<Location /datesvn1>
DAV svn
#SVNParentPath /home/svn/ #這里是設置根目錄,也就是所有庫文件的根目錄例如/home/svn/datesvn和/home/svn/datesvn1的根目錄就是/home/svn
SVNPath /home/svn/datesvn1 #這里是設置單個庫的目錄,如果只有一個庫,可以用這個
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# Require SSL connection for password protection.
# SSLRequireSSL
AuthType Basic
AuthName "驗證信息" #svn連接時的提示信息,可手動修改
AuthzSVNAccessFile /home/svn/datesvn/conf/authz #文件訪問的權限配置文件,需要制定文件,官網(wǎng)說明沒有這項,需要自己補上
AuthUserFile /home/svn/datesvn/conf/passwd #指定密碼文件
Require valid-user #只有認證用戶才可以訪問,類似防火墻的拒絕
# </LimitExcept>
</Location>
由于很多文章沒有詳細講述SVNParentPath,當時個人覺得還是挺方便的,推薦
*/
#添加可訪問用戶
htpasswd -c /home/svn/datesvn/conf/passwd ch
htpasswd /home/svn/datesvn/conf/passwd test2
htpasswd的使用方法請在我的另一文章查看
service httpd restart
#以上是個人查閱文檔后寫的簡單模板,有更好的建議請聯(lián)系我。
/*-------------------------------------------------------------介紹篇------------------------------------------------------------------------
/home/svn/datesvn/conf下這些文件是主要的配置文件:
svnserve.conf: svn服務配置文件,apache有相似的功能,所以這里沒有說這個文件的作用,因為不會用到。
passwd: 用戶名口令文件。
authz: 權限配置文件。
安裝完mod_dav_svn后,默認會在apache的conf.d目錄,出現(xiàn)以下模塊的mod_dav_svn.so 和mod_authz_svn.so
以及subversion.conf,當然你會看見,
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
已經(jīng)幫你寫好調用了,不需要再主配置文件httd.conf再寫的了
權限問題,由于是http訪問,那么寫和讀都要有apache的權限操作才能完成
# 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
subversion里邊有寫到,必須是apache可以訪問,如果有開selinux,那么chcon -R -t httpd_sys_content_t stuff
*/
那么配置好后,主要是以下幾個文件的增刪改查:
添加用戶 htpasswd /home/svn/datesvn/conf/passwd 用戶
修改權限 vi /home/svn/datesvn/authz
service httpd reload
訪問方式
http://ip/datesvn
http://ip/datesvn1
當然也可以配置域名訪問
更多詳情可看subversion中文網(wǎng),比較簡潔的版本安裝,但是功能定制比較詳細的就沒有比較好的例子了
http://wiki.ubuntu.org.cn/SubVersion
總結
以上是生活随笔為你收集整理的SVN--subversion的五种访问方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Silverlight 2 和 VS
- 下一篇: 如何使用 ADO.NET 和 Visua