如何快速建立Subversion伺服器,并且在項目中使用起來,這是大家最關心的問題,與CVS相比,Subversion有更多的選擇,也更加的容易,幾個指令就可以建立一套伺服器環境,可以使用起來,這裡配套有 動畫教程 。
本文是使用Subversion最快速的教程,在最短的時間裡幫助您建立起一套可用的伺服器環境,隻需略加調整就可以應用到實際項目當中。
本教程分為以下幾個部門,不僅僅是快速入門,最後我們還有一些進階功能的說明,為了說明簡單,教程是在windows下使用的方式,以友善資源有限的項目使用,對于UNIX環境下,差別并不大。
軟體下載下傳
伺服器和用戶端安裝
建立版本庫(Repository)
配置使用者和權限
運作獨立伺服器
初始化導入
基本用戶端操作
1,軟體下載下傳
下載下傳Subversion伺服器程式。
到官方網站的下載下傳二進制安裝檔案,來到二進制包下載下傳部分,找到 Windows NT, 2000, XP and 2003部分,然後選擇" this directory ",這樣我們可以看到許多下載下傳的内容,目前可以下載下傳 svn-1.4.0-setup.exe 。
下載下傳Subversion的Windows用戶端TortoiseSVN。
TortoiseSVN是擴充Windows Shell的一套工具,可以看作Windows資料總管的插件,安裝之後Windows就可以識别Subversion的工作目錄。
官方網站是TortoiseSVN ,下載下傳方式和前面的svn伺服器類似,在Download頁面的我們可以選擇下載下傳的版本,目前的最高穩定版本的安裝檔案為TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi。
2,伺服器和用戶端安裝
伺服器安裝,直接運作svn-1.4.0-setup.exe ,根據提示安裝即可,這樣我們就有了一套伺服器可以運作的環境。
安裝TortoiseSVN,同樣直接運作TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi按 照提示安裝即可,不過最後完成後會提示是否重新開機,其實重新開機隻是使svn工作拷貝在windows中的特殊樣式生效,與所有的實際功能無關,這裡為了立刻看 到好的效果,還是重新啟動機器。若是不習慣英文還可以選擇安裝用戶端語言漢化包“LanguagePack-1.4.5.10425-win32- zh_CN.exe”(也需下載下傳),安裝後預設還是英文,需要在用戶端工具中設定一下。
此外,在編譯器中也可以使用SVN插件來代替用戶端工具,使開發起來更加友善。詳細介紹請見Eclipse中SVN版本控制插件的安裝和使用
3,建立版本庫(Repository)
運作Subversion伺服器需要首先要建立一個版本庫(Repository),可以看作伺服器上存放資料的資料庫,在安裝了Subversion伺服器之後,可以直接運作,如:
svnadmin create E:\svndemo\repository
就會在目錄E:\svndemo\repository下建立一個版本庫。
我們也可以使用TortoiseSVN圖形化的完成這一步:
在目錄E:\svndemo\repository下"右鍵->TortoiseSVN->Create Repository here...“, 然後可以選擇版本庫模式, 這裡使用預設即可, 然後就建立了一系列目錄和檔案。
4,配置使用者和權限
svn的權限管理涉及到一下檔案:
passwd檔案 -- /conf目錄下 用于存放本svn庫的使用者名和密碼,用 = 分割,左邊是使用者名,右邊是密碼(明文)。
authz -- /conf目錄下 用于存放本svn庫的通路授權資訊。
svnserve.conf -- /conf目錄下 用于存放本svn庫的全局通路控制資訊。
來到E:\svndemo\repository\conf目錄,修改svnserve.conf:
# [general]
# password-db = passwd
改為:
[general]
password-db = passwd 然後修改同目錄的passwd檔案(設定使用者密碼),去掉下面三行的注釋再加兩個使用者:
# [users]
# harry = harryssecret
# sally = sallyssecret
最後變成:
[users]
harry = harryssecret
sally = sallyssecret
svnadmin = admin
zgz = zgz0809
最後修改同目錄的authz檔案,它定義了兩部分的内容:
1,對組成員的定義,
2,對目錄的授權定義,
可以針對一個單一使用者授權,也可以針對在[groups]裡面定義的一個組授權,還可以用*通配符來對所有的使用者授權,
授權的選項有:隻讀通路('r'),讀寫通路('rw'),或者無權防問('').
authz檔案中可以對任意多個目錄進行權限控制,一下是一個例子:
[groups]
harry_and_sally = harry,sally
#設定權限組
[/]
svnadmin = rw
[/truck]
zgz = rw
harry = rw
sally = r
* = r
[/sanguo]
zgz = rw
harry = r
sally = rw
* = r
[/ts]
@harry_and_sally = rw
# 以@為鍵值意味着對前面定義的組進行授權
* = r
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
使用者svnadmin權限最大,他可以進行根目錄(注意:是伺服器目錄svn://localhost/,下邊會介紹的)下所有檔案(包括子目錄下的檔案)的讀寫操作,而/truck,/sanguo,/ts是在伺服器的根目錄下建立的三個子目錄。
使用者zgz 和harry對 /truck具有讀寫權限,sally 隻有讀的權限。
使用者zgz 和sally對 /sanguo具有讀寫權限,harry 隻有讀的權限。
使用者harry 和sally對 /ts具有讀寫權限,zgz隻有讀的權限。(* = r 表示所有使用者都具有讀的權限,當然zgz也就自然具有了。注意這裡 @harry_and_sally = rw 表示給harry_and_sally組所有使用者授權,該組在上邊[groups]标簽中已定義)
注意:如果使用者對一個目錄具有某種權限,那麼他對其子目錄也有同樣的權限(例如:svnadmin),是以在授權時要特别注意,盡量隻付給滿足使用者需要的最小的權限。
5,運作獨立伺服器
在任意目錄下運作:
svnserve -d -r E:\svndemo\repository 我們的伺服器程式就已經啟動了。注意不要關閉指令行視窗,關閉視窗也會把svnserve停止。為了友善,可以把svnserve作為服務,在2000下控制台視窗可以運作,建立服務指令:
sc.exe create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r E:\svndemo\repository" depend= tcpip
如果加錯了可以用:sc delete "SVNService" 指令删除服務。
加好後可以在控制台的服務選項中找到它,把它啟動類型設為手動,然後啟動一下看看有沒有問題。
注意:
1."D:\Subversion"是SVN伺服器端的安裝路徑,"E:\svndemo\repository"是版本庫的路徑,視具體情況而定。
2. 等号前無空格後有空格。
3. 應使用參數“--service”而不是“-d”,參數前面的橫線不是一個是兩個。
4. binpath内套的路徑如果包含空格,也需要使用雙引号,此時需要使用轉義符表示内部的引号(\")。
5.使用“SVNService.exe”将SVN作為Window服務運作(Subversion1.4之前版本也可使用)
SVNService.exe -install -d -r E:\svndemo\repository
6,初始化導入
來到我們想要導入的項目根目錄,在這個例子裡是E:\svndemo\wc1,目錄下有一個readme.txt檔案:
右鍵->TortoiseSVN->Import...
URL of repository輸入“svn://localhost/” ,如果服務安裝在其他機器則将localhost改換為目标機器的IP位址“svn://10.8.6.87/”。
ok
完成之後目錄沒有任何變化,如果沒有報錯,資料就已經全部導入到了我們剛才定義的版本庫中。
需要注意的是,這一步操作可以完全在另一台安裝了TortoiseSVN的主機上進行。例如運作svnserve的主機的IP是 10.8.6.87,則URL部分輸入的内容就是“svn://10.8.6.87/”,一般為了便于管理不會導入到服務的根目錄下,而是導入到工程的子 目錄,如/truck,/sanguo,/ts。導入的URL就添svn://localhost/truck。
7,基本用戶端操作
取出版本庫到一個工作拷貝:
來到任意空目錄下,在本例中是E:\svndemo\wc1,運作右鍵->Checkout,在URL of repository中輸入svn://localhost/,這樣我們就得到了一份工作拷貝。
在工作拷貝中作出修改并送出:
打開readme.txt,作出修改,然後右鍵->Commit...,這樣我們就把修改送出到了版本庫,我們可以運作。
察看所作的修改:
readme.txt上右鍵->TortoiseSVN->Show Log,這樣我們就可以看到我們對這個檔案所有的送出。在版本1上右鍵->Compare with working copy,我們可以比較工作拷貝的檔案和版本1的差別。功能挺強大,具體使用不做詳解。