Windows操作系統中SVN使用手冊詳解
本節主要介紹一下Windows下SVN使用手冊,在這里拿出來和大家分享一下,希望對大家有用,讓我們一起來學習Windows下SVN使用手冊吧。
一、下載
首先,請登錄SVN官網http://subversion.tigris.org/下載服務端和客戶端安裝包。
可以根據你的需求,下載相應的發行版。如VisualSVN,其服務端是免費的,它提供了一個界面管理器,實現可視化配置管理,然而客戶端卻是收費的。
VisualSVNServer下載:http://www.visualsvn.com/server/download/對于大多數只進行源碼版本控制的用戶來說,TortoiseSVN無疑是首選。TortoiseSVN下載:http://tortoisesvn.tigris.org/
如果不嫌麻煩的話,建議使用Apatch2.x手動配置版本,你可以到該網址下載http://subversion.tigris.org/getting.html#windows
二、安裝運行
將下載的svn-win32-1.5.4.zip解壓到如“D:SVN”,生成bin,iconv,licenses,share等子目錄,在bin下提供了很多命令行工具,如svnserve.exe、svnadmin.exe、svn.exe,使用--help可以獲取幫助。
啟動服務器:svnserve--daemon--root"E:svnRoot"--root"E:svnRoot"指定倉庫根目錄,服務器默認使用3690端口。
注冊為服務:sccreateSVNServicebinpath=""D:svnbinsvnserve.exe"--service--rootD:svnRoot"displayname="SVNService"depend=Tcpip
注意這里"D:svnbinsvnserve.exe",當path中含有空格時,需要"path"包含起來。另外命令中每個等號前面不能有空格,而等號后面必須有空格,不然命令是不會被執行的,也不會報錯。
客戶端的安裝比較簡單,運行TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi,安裝后重啟計算機即可。
三、建立版本庫
運行Subversion服務器需要首先要建立一個版本庫(Repository),可以看作服務器上存放數據的數據庫,SVN使用手冊有兩種方法可以建立版本庫:
1、命令行方法:在命令行模式下,運行svnadmincreated:svnRootvwas,即可在d盤下創建一個版本庫vwas。通常我們選用該方法。注意:版本庫必須創建到根目錄d:svnRoot,否則無法查找。(因為subversion對版本庫采用子目錄管理方法)
2、界面操作方法:在d:svnRoot目錄下,右鍵,選擇TortoiseSVN下的“在此創建文件庫”,文件庫類型選擇默認的“本地文件系統(FSFS)”,這樣就會在該目錄下創建一個版本庫。(需要在服務器上安裝TortoiseSVN)repository創建完畢后會在目錄下生成若干個文件和文件夾,dav目錄是提供給Apache與mod_dav_svn使用的目錄,讓它們存儲內部數據;db目錄就是所有版本控制的數據文件;hooks目錄放置hook腳本文件的目錄;locks用來放置Subversion文件庫鎖定數據的目錄,用來追蹤存取文件庫的客戶端;format文件是一個文本文件,里面只放了一個整數,表示當前文件庫配置的版本號;
四、配置權限
SVN使用手冊介紹配置權限問題。注意:subversion修改配置后無須重啟服務。
進入版本庫如d:svnRootvwasconf,有三個配置文件svnserve.conf、passwd、authz,修改時必須去掉#和前面的空格,否則會報錯,=號兩邊允許空格。
svnserve.conf文件內容如下:(svnserve默認使用這些配置)
[general]
#anon-access=read(這兩句是總綱,控制匿名用戶的權限,既使authz中使用*=rw也無法打破,實際應用中這里可能設置為none,禁止匿名用戶進行任何訪問)
#auth-access=write
#password-db=passwd
#authz-db=authz
#realm=MyFirstRepository
各參數定義如下:
anon-access:定義非授權用戶的訪問權限,有三種方式:none、read、write,設置為none限制訪問,read為只讀,write為具有讀寫權限,默認為read。
auth-access:定義授權用戶的訪問權限,有三種方式:none、read、write,設置為none限制訪問,read為只讀,write為具有讀寫權限,默認為write。
password-db:定義保存用戶名和密碼的文件名稱,這里為passwd,和該文件位于同一目錄。
authz-db:定義保存授權信息的文件名稱,這里為authz,和該文件位于同一目錄。
realm:定義客戶端連接是的“認證命名空間”,Subversion會在認證提示里顯示,并且作為憑證緩存的關鍵字。
subversion按版本目錄來進行管理,只有在根目錄下存在版本庫目錄,版本庫才有效,如必須存在d:svnRootvwas,svnlistsvn://localhost/vwas才能執行成功。版本庫conf下必須存在svnserve.conf,為了方便的進行多庫管理,可以讓所有版本庫共用統一的用戶和權限文件。
password-db=../../passwd將passwd放到svnRoot根目錄,統一管理所有用戶
authz-db=../../authz
passwd文件內容如下:
- [users]
- #harry=harryssecret
- #sally=sallyssecret
- 這里定義了兩個用戶harry和sally,用戶密碼分別是harryssecret和sallyssecret。同樣,我們還可以定義自己的用戶名和密碼。如下面添加guest用戶,密碼空guest=
- authz文件內容如下:
- [groups]
- #harryharry_and_sally=harry,sally
- #[/foo/bar]
- #harry=rw
- #*=
- #[repository:/baz/fuz]
- #@harry_and_sally=rw
- #*=r
這里定義了組harry_and_sally,組在引用時需要@組名,*表示所有用戶,包括匿名用戶。使用組的好處是,往往在實際應用中,同一個倉庫或目錄并不只是一個用戶訪問,通常我們將用戶編成dev開發組、test測試組、man管理組,doc文檔組,分別進行權限分配,如
- [vwas:/]
- *=
- [vwas:/doc]
- @man=rw
- @doc=rw
- @dev=r
- @test=r
- [vwas:/srv]
- @dev=rw
- @test=r
- [vwas:/test]
- @test=rw
subversion按照[倉庫名:目錄]的格式進行權限分析,忽略倉庫名時,如[/]表示對所有的版本庫生效。由于設計subversion的大佬們習慣linux,到了windows下,他們仍然使用"/"來標識子目錄。
尤其需要注意的是:
子目錄繼承父目錄的訪問權限,如果指定了管理員對根目錄具有讀寫權限,則管理員對子目錄也具有讀寫權限。
權限規則沒有優先級,采用“|”“&“的方式進行。
但是,如果在子目錄中設置*=來割斷對父目錄權限的繼承,則子目錄中必須設置管理員權限為rw,下面這種設置是有問題的:
[arm:/]
qianxin=rw
[arm:/diary/shanghai]
dai=rw
gongyu=rw
*=(這句表示割斷除dai和gongyu以外所有用戶的權限)請期待下節SVN使用手冊介紹。
【編輯推薦】