安裝
一、 獲取資源
(1) apache Http Server 2.0.55 。 用于和 SVN 整合
(2) svn-1.3.2-setup.exe SVN 服務(wù)器端
(3) TortoiseSVN-1.3.2.5840-svn-1.3.0.msi SVN 的客戶端
(4) LanguagePack_1.3.2_zh_CN.exe tortoise 的語(yǔ)言包
(5) SVNService.zip SVN 的一個(gè)第三方工具,將 SVN 用做 windows 后臺(tái)服務(wù)
二、 安裝
上面的 1 、 2 、 3 、 4 均為直接安裝即可,注意在安裝完 3 再安裝四的時(shí)候要重啟一下,然后將 5 解壓到 2 中安裝目錄下的 bin 目錄中。至此安裝完畢
三、 配置
沒(méi)什么好特別配置的。基本上安裝好了就可以使用,使用方式是用 3 的客戶端工具選擇一個(gè)空的文件夾右鍵 ---- à 在此創(chuàng)建文件庫(kù)。一個(gè) SVN 的倉(cāng)庫(kù)文件就創(chuàng)建完畢。因?yàn)橐紤]到后面的 apache 的整合所以建議名字不要太專(zhuān)一性,然后轉(zhuǎn)到項(xiàng)目或者你想加入版本控制的文件或者文件夾上面,點(diǎn)右鍵選擇導(dǎo)入,在彈出的對(duì)話框里面輸入倉(cāng)庫(kù)地址,執(zhí)行導(dǎo)入完畢后一個(gè)完整的文件版本誕生了。
注意:在導(dǎo)入時(shí) 3 中的客戶端默認(rèn)是導(dǎo)入當(dāng)前文件夾的子文件夾,所以如果你想將當(dāng)前目錄也導(dǎo)入的話,請(qǐng)將他放入一個(gè)文件夾內(nèi)再執(zhí)行導(dǎo)入操作。
然后是倉(cāng)庫(kù)的配置:轉(zhuǎn)到倉(cāng)庫(kù)目錄的 conf 中,尋找 svnserve.conf 文件并將其中的
[general]
anon-access = read
auth-access = write
password-db = passwd
realm = My First Repository
前面的 # 號(hào)去掉,然后去掉他前面的空格。保存。
這里的意思是: anon-access 指 匿名訪問(wèn)的權(quán)限,可以是 read,write,none, 默認(rèn)為 read
auth-access 指 認(rèn)證用戶的權(quán)限,可以是 read,write,none, 默認(rèn)為 write
password-db 指 密碼數(shù)據(jù)庫(kù)的路徑,去掉前面的,存的是認(rèn)證用戶的用戶名和密碼, username=passwd
然后是修改 passwd 文件
1. 去掉 [users] 前面的 #, 否則 svn 只能以匿名用戶登錄,客戶端不會(huì)出現(xiàn)登錄窗口,除非你的 anon 不為 none, 否則將返回一個(gè)錯(cuò)誤。
2. 添加用戶名和密碼 username=password
四、 啟動(dòng) SVN 服務(wù)器
對(duì)于單個(gè)代碼倉(cāng)庫(kù)
啟動(dòng)命令 svnserve -d -r /home/svnrepo --listen-host 192.168.100.200
其中 -d 表示在后臺(tái)運(yùn)行, -r 指定服務(wù)器的根目錄,這樣訪問(wèn)服務(wù)器時(shí)就可以直接用 svn:// 服務(wù)器 ip 來(lái)訪問(wèn)了。如果服務(wù)器有多 ip 的話 --listen-host 來(lái)指定監(jiān)聽(tīng)的 ip 地址 .
我們可以在 svn 客戶端中通過(guò) svn://192.168.100.200 來(lái)訪問(wèn) svn 服務(wù)器
對(duì)于多個(gè)代碼倉(cāng)庫(kù) , 我們?cè)趩?dòng)時(shí)也可以用 -r 選項(xiàng)來(lái)指定服務(wù)器根目錄 , 但訪問(wèn)時(shí)需要寫(xiě)上每個(gè)倉(cāng)庫(kù)相對(duì)于 svn 根目錄的相對(duì)路徑 .
比如 , 我們有兩個(gè)代碼倉(cāng)庫(kù) /home/repoa 和 /home/repob, 我們用 svnserve -d -r /home --listen-host 192.168.100.200 來(lái)啟動(dòng) , 那么在客戶端訪問(wèn)時(shí)可以用 svn://192.168.100.200/repoa 和 svn://192.168.1.200/repob 來(lái)分別訪問(wèn)兩個(gè)項(xiàng)目
啟動(dòng)完成以后 , 我們可以用 ps aux|grep svnserv 來(lái)查看是否存在 svnserve 進(jìn)程 .
五、 開(kāi)放服務(wù)器端口
svn 默認(rèn)端口是 3690 ,你需要在防火墻上開(kāi)放這個(gè)端口。
也可以通過(guò) svnserve 的 --listen-port 選項(xiàng)來(lái)指定一個(gè)已經(jīng)開(kāi)放的其他端口 , 不過(guò)這樣的話客戶端使用也必須家上端口 , 如 svn://192.168.100.200:9999/ 。
六、 與 apache 的整合
各種存取 repository 的方法
SVN 設(shè)計(jì)時(shí)已經(jīng)把 repository 的存取抽象化了,所以理論上,只要是可以進(jìn)行資料傳送的方法或通訊協(xié)定,就可以用來(lái)存取 repository。
實(shí)際上,SVN 目前能支援的存取方法還是有限的,不過(guò)也比它的前輩 CVS 多了一些,而且未來(lái)還可以繼續(xù)擴(kuò)充。 SVN 存取 repository 的方法要在 URL 的通訊協(xié)定部分指定,可以有:
file:///
直接存取本地檔案系統(tǒng)裡的 repository。
http://
透過(guò)支援 SVN 的 Apache 伺服器 (以 module 的形式),以 WebDAV 存取
https://
一樣是用 WebDAV,但加上 SSL
svn://
以自訂的通訊協(xié)定,連接 svnserve 來(lái)存取 repository
svn+ssh://
和 svn:// 一樣,但透過(guò) ssh 協(xié)定作 tunnel
另一種比較常用的使用SVN的方式是將其與apache整合。通過(guò)http協(xié)議來(lái)訪問(wèn)代碼,通過(guò)web界面來(lái)瀏覽察看,通過(guò)http服務(wù)器的安全控制來(lái)進(jìn)行權(quán)限認(rèn)證。
安裝要點(diǎn)記錄如下:
0 假設(shè)安裝Apache至D:\Apache2
1 復(fù)制%SVN_HOME%\bin\libdb42.dll、libeay32.dll、以及 ssleay32.dll到%APACHE_HOME%\bin
2 復(fù)制%SVN_HOME%\httpd\*.so到%APACHE_HOME%\modules
3 修改%APACHE_HOME%\conf\httpd.conf,增加或修改:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
4 在中增加/svn的
DAV svn
SVNPath D:/SVNDIR/taowap
5 重起apache,通過(guò)瀏覽器訪http://localhost/svnserver可看到Subversion的信息。
在訪問(wèn)控制的方面,可以采用windows域用戶身份驗(yàn)證。此處也可以用mysql,passwd文件,LDAP等其他任何Apache支持的驗(yàn)證方式。
此處我采用文件方式,首先建立一個(gè)保存密碼的文件,如果不需要對(duì)密碼加密,可增加-p參數(shù)生成plain text。
%APACHE_HOME%\bin\htpasswd –c -p d:\passwd\passwords user1
生成的文件內(nèi)容如下:
# 格式username:password
user1:123456
如果要按照Group的方式來(lái)控制權(quán)限,可同時(shí)建立一個(gè)groups文件,內(nèi)容如下:
# 格式:GroupName: username1 username2
svngroup: user1 user2
在httpd.conf中的/svnserver處增加權(quán)限控制部分:
DAV svn
# 指向SVN Repository的ROOT
SVNPath d:/svnrepo
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile d:/passwd/passwords
AuthGroupFile d:/passwd/groups
Require group svngroup
重起服務(wù)器,瀏覽http://localhost/svnserver,出現(xiàn)安全對(duì)話框,輸入用戶名密碼即可成功。
七: 附: svnserve [ 選項(xiàng) ]
有效選項(xiàng):
-d [--daemon] : 后臺(tái)模式
--listen-port arg : 監(jiān)聽(tīng)端口(后臺(tái)模式)
--listen-host arg : 監(jiān)聽(tīng)主機(jī)名或 IP 地址(后臺(tái)模式)
--foreground : 在前臺(tái)運(yùn)行(調(diào)試時(shí)有用)
-h [--help] : 顯示這個(gè)幫助
--version : 顯示版本信息
-i [--inetd] : inetd 模式
-r [--root] arg : 服務(wù)根目錄
-R [--read-only] : 不贊成;使用檔案庫(kù)配置文件
-t [--tunnel] : 隧道模式
--tunnel-user arg : 隧道用戶名(模式是當(dāng)前用戶 UID 的名字)
-T [--threads] : 使用線程代替進(jìn)程
-X [--listen-once] : 監(jiān)聽(tīng)一次(調(diào)試時(shí)有用)
參考:http://doc.zoomquiet.org/data/20050617140221/
部分內(nèi)容參考至網(wǎng)上。