已驗證用戶給予寫權限 (當然也能讀)
密碼數(shù)據(jù)存放到passwd文件中
passwd
[users]
#harry = harryssecret
#sally = sallyssecret
admin=admin111
lvzy=lvzy111
含義是:
增加了admin這個用戶,密碼為admin111
增加了lvzy這個用戶,密碼為lvzy111
Author
[groups]
# harry_and_sally = harry,sally
進行用戶組的配制
比如:
Lantian=admin,lvzy
含義是將admin,lvzy加入到組Lantian中去
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
進行文件權限的設置
比如存在libs這個文件,而我只希望admin一個人可以讀寫,lvzy有讀權限,未授權的無法訪問,則可以這樣寫
[/libs]
admin=rw
lvzy=r
*=none
注:*表示匿名用戶
四.測試SVN
在客戶端(當然也可以是本機),右擊點TortoiseSVN-》Repo_Browser在彈出的URL中輸入svn://服務器IP,點擊OK,這
時會要求你輸入用戶名和密碼,你將你在passwd中設置的用戶和密碼在這里輸入就可以了,然后你就可以看到版本庫的內容,當然剛開始是新的,具體的客戶
端使用請查看其他文檔。
五. 說明
服務器端防火墻應關閉,否則,將直接影響訪問速度或不可訪問。
服務器端的安裝可以完全按照以上四步的操作進行(可以不在服務器上安裝客戶端,即不執(zhí)行二.4步驟);客戶端的安裝,只需要執(zhí)行二.4步操作,安裝客戶端軟件即可。客戶端使用時,打開IE瀏覽器按第四步驟輸入:svn://IP 即可。
安裝
一、 獲取資源
(1) apache Http Server 2.0.55 。 用于和 SVN 整合
(2) svn-1.3.2-setup.exe SVN 服務器端
(3) TortoiseSVN-1.3.2.5840-svn-1.3.0.msi SVN 的客戶端
(4) LanguagePack_1.3.2_zh_CN.exe tortoise 的語言包
(5) SVNService.zip SVN 的一個第三方工具,將 SVN 用做 windows 后臺服務
二、 安裝
上面的 1 、 2 、 3 、 4 均為直接安裝即可,注意在安裝完 3 再安裝四的時候要重啟一下,然后將 5 解壓到 2 中安裝目錄下的 bin 目錄中。至此安裝完畢
三、 配置
沒什么好特別配置的。基本上安裝好了就可以使用,使用方式是用 3
的客戶端工具選擇一個空的文件夾右鍵 ---- à 在此創(chuàng)建文件庫。一個 SVN 的倉庫文件就創(chuàng)建完畢。因為要考慮到后面的 apache
的整合所以建議名字不要太專一性,然后轉到項目或者你想加入版本控制的文件或者文件夾上面,點右鍵選擇導入,在彈出的對話框里面輸入倉庫地址,執(zhí)行導入完
畢后一個完整的文件版本誕生了。
注意:在導入時 3 中的客戶端默認是導入當前文件夾的子文件夾,所以如果你想將當前目錄也導入的話,請將他放入一個文件夾內再執(zhí)行導入操作。
然后是倉庫的配置:轉到倉庫目錄的 conf 中,尋找 svnserve.conf 文件并將其中的
[general]
anon-access = read
auth-access = write
password-db = passwd
realm = My First Repository
前面的 # 號去掉,然后去掉他前面的空格。保存。
這里的意思是: anon-access 指 匿名訪問的權限,可以是 read,write,none, 默認為 read
auth-access 指 認證用戶的權限,可以是 read,write,none, 默認為 write
password-db 指 密碼數(shù)據(jù)庫的路徑,去掉前面的,存的是認證用戶的用戶名和密碼, username=passwd
然后是修改 passwd 文件
1. 去掉 [users] 前面的 #, 否則 svn 只能以匿名用戶登錄,客戶端不會出現(xiàn)登錄窗口,除非你的 anon 不為 none, 否則將返回一個錯誤。
2. 添加用戶名和密碼 username=password
四、 啟動 SVN 服務器
對于單個代碼倉庫
啟動命令 svnserve -d -r /home/svnrepo --listen-host 192.168.100.200
其中 -d 表示在后臺運行, -r 指定服務器的根目錄,這樣訪問服務器時就可以直接用 svn:// 服務器 ip 來訪問了。如果服務器有多 ip 的話 --listen-host 來指定監(jiān)聽的 ip 地址 .
我們可以在 svn 客戶端中通過 svn://192.168.100.200 來訪問 svn 服務器
對于多個代碼倉庫 , 我們在啟動時也可以用 -r 選項來指定服務器根目錄 , 但訪問時需要寫上每個倉庫相對于 svn 根目錄的相對路徑 .
比如 , 我們有兩個代碼倉庫 /home/repoa 和 /home/repob,
我們用 svnserve -d -r /home --listen-host 192.168.100.200 來啟動 ,
那么在客戶端訪問時可以用 svn://192.168.100.200/repoa 和 svn://192.168.1.200/repob
來分別訪問兩個項目
啟動完成以后 , 我們可以用 ps aux|grep svnserv 來查看是否存在 svnserve 進程 .
五、 開放服務器端口
svn 默認端口是 3690 ,你需要在防火墻上開放這個端口。
也可以通過 svnserve 的 --listen-port 選項來指定一個已經開放的其他端口 , 不過這樣的話客戶端使用也必須家上端口 , 如 svn://192.168.100.200:9999/ 。
六、 與 apache 的整合
各種存取 repository 的方法
SVN 設計時已經把 repository 的存取抽象化了,所以理論上,只要是可以進行資料傳送的方法或通訊協(xié)定,就可以用來存取 repository。
實際上,SVN 目前能支援的存取方法還是有限的,不過也比它的前輩 CVS 多了一些,而且未來還可以繼續(xù)擴充。 SVN 存取 repository 的方法要在 URL 的通訊協(xié)定部分指定,可以有:
file:///
直接存取本地檔案系統(tǒng)裡的 repository。
http://
透過支援 SVN 的 Apache 伺服器 (以 module 的形式),以 WebDAV 存取
https://
一樣是用 WebDAV,但加上 SSL
svn://
以自訂的通訊協(xié)定,連接 svnserve 來存取 repository
svn+ssh://
和 svn:// 一樣,但透過 ssh 協(xié)定作 tunnel
另一種比較常用的使用SVN的方式是將其與apache整合。通過http協(xié)議來訪問代碼,通過web界面來瀏覽察看,通過http服務器的安全控制來進行權限認證。
安裝要點記錄如下:
0 假設安裝Apache至D:\Apache2
1 復制%SVN_HOME%\bin\libdb42.dll、libeay32.dll、以及 ssleay32.dll到%APACHE_HOME%\bin
2 復制%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 在<VirtualHost>中增加/svn的<Location>
<Location /svnserver>
DAV svn
SVNPath D:/SVNDIR/taowap
</Location>
|
5 重起apache,通過瀏覽器訪http://localhost/svnserver可看到Subversion的信息。
在訪問控制的方面,可以采用windows域用戶身份驗證。此處也可以用mysql,passwd文件,LDAP等其他任何Apache支持的驗證方式。
此處我采用文件方式,首先建立一個保存密碼的文件,如果不需要對密碼加密,可增加-p參數(shù)生成plain text。
%APACHE_HOME%\bin\htpasswd –c -p d:\passwd\passwords user1
生成的文件內容如下:
# 格式username:password
user1:123456
|
如果要按照Group的方式來控制權限,可同時建立一個groups文件,內容如下:
# 格式:GroupName: username1 username2
svngroup: user1 user2
|
在httpd.conf中的/svnserver處增加權限控制部分:
<Location /svnserver>
DAV svn
# 指向SVN Repository的ROOT
SVNPath d:/svnrepo
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile d:/passwd/passwords
AuthGroupFile d:/passwd/groups
Require group svngroup
</Location>
|
重起服務器,瀏覽http://localhost/svnserver,出現(xiàn)安全對話框,輸入用戶名密碼即可成功。
七: 附: svnserve [ 選項 ]
有效選項:
-d [--daemon] : 后臺模式
--listen-port arg : 監(jiān)聽端口(后臺模式)
--listen-host arg : 監(jiān)聽主機名或 IP 地址(后臺模式)
--foreground : 在前臺運行(調試時有用)
-h [--help] : 顯示這個幫助
--version : 顯示版本信息
-i [--inetd] : inetd 模式
-r [--root] arg : 服務根目錄
-R [--read-only] : 不贊成;使用檔案庫配置文件
-t [--tunnel] : 隧道模式
--tunnel-user arg : 隧道用戶名(模式是當前用戶 UID 的名字)
-T [--threads] : 使用線程代替進程
-X [--listen-once] : 監(jiān)聽一次(調試時有用)
如果你的系統(tǒng)是 WinXP,在安裝 Office2003 時出現(xiàn)了“不能訪問 Windows Installer
服務,可能是你在安全摸式下運行 Windows 或 Window Installer 沒有正確安裝”錯誤(實際上是所有使用 Windows
Installer 服務安裝的 MSI 格式程序均不能正常安裝);在“服務”里查看“Windows Installer
”服務的狀態(tài),一般為停用,當你試圖啟用此服務,會發(fā)現(xiàn)此服務已被系統(tǒng)禁用,或則 Windows Installer
服務已被標記為刪除;而當你嘗試重新安裝 Windows Installer 服務時,系統(tǒng)提示“指定的服務已存在”——那這篇文章就是你想要的了。
解決方法(在 WinXP/Win2000 上通過):
- 先用記事本編寫如下內容,并保存為 installer.reg 格式文件,雙擊將文件導入注冊表;
- 運行“CMD”命令提示符,輸入“msiexec /regserver”并回車;
- 無須重新啟動,即刻搞掂!
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSIServer]
"ImagePath"=-
"ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,\
00,73,00,69,00,65,00,78,00,65,00,63,00,2e,00,65,00,78,00,65,00,20,00,2f,00,\
56,00,00,00
; ImagePath = %SystemRoot%\System32\msiexec.exe /V