天天看點

windows 下配置svn伺服器(轉載+修改)

 傳統的Subversion 伺服器程式:

一、準備工作

1、擷取 Subversion 伺服器程式

到官方網站(http://subversion.tigris.org/)下載下傳最新的伺服器安裝程式。目前最新的是1.6.6版本,具體下載下傳位址在:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100

2、擷取 TortoiseSVN 用戶端程式

從官方網站 http://tortoisesvn.net/downloads 擷取最新的 TortoiseSVN 。TortoiseSVN 是一個用戶端程式,用來與 subvers 伺服器端通訊。Subversion 自帶一個用戶端程式 svn.exe ,但 TortoiseSVN 更好操作,提高效率。

二、安裝伺服器端和用戶端

安裝 Subversion(以下簡稱SVN)的伺服器端和用戶端。下載下傳下來的伺服器端是個 zip 壓縮包,直接解壓縮即可,比如我解壓到 D:\soft\subversion。用戶端安裝檔案是個 exe 可執行檔案,直接運作按提示安裝即可,用戶端安裝完成後提示重新開機。

三、建立版本庫(Repository)

運作Subversion伺服器需要首先要建立一個版本庫(Repository)。版本庫可以看作是伺服器上集中存放和管理資料的地方。

開始建立版本庫。首先建立 H:\svn 空檔案夾作為所有版本庫的根目錄。然後,進入指令行并切換到subversion的bin目錄。輸入如下指令:

svnadmin create E:\svn\repos1

此指令在 E:\svn 下建立一個版本庫 repos1 。repos1 下面會自動生成一些檔案夾和檔案。

    conf目錄是用來存放權限配置的,

    db目錄是所有版本控制的資料檔案,

    hooks目錄用來放置hook腳本檔案,

    locks目錄存放Subversion檔案庫鎖定資料,用來追蹤存取檔案庫的用戶端,

    format是一個文本檔案,裡面隻放了一個整數,表示目前檔案庫配置的版本号,

    readme.txt不用說也知道是幹什麼的了。

我們也可以使用 TortoiseSVN 圖形化的完成這一步:

先建立空目錄 E:\svn\repos1 ,注意一定是要空的。然後在 repos1 檔案夾上“右鍵->TortoiseSVN->Create Repository here...”,然後可以選擇版本庫模式,這裡使用預設的FSFS即可,然後就建立了一系列檔案夾和檔案,同指令行建立的一樣。

四、運作獨立伺服器

此時 subversion 服務還沒有開始,隻是通過它的指令建立了版本庫。繼續在剛才的指令視窗輸入:

svnserve.exe --daemon

svnserve 将會在端口 3690 等待請求,--daemon(兩個短橫線)選項告訴 svnserve 以守護程序方式運作,這樣在手動終止之前不會退出。注意不要關閉指令行視窗,關閉視窗會把 svnserve 停止。

為了驗證svnserve正常工作,使用TortoiseSVN -> Repo-browser 來檢視版本庫。在彈出的 URL 對話框中輸入:

svn://localhost/svn/repos1

點 OK 按鈕後就可以看見 repos1 版本庫的目錄樹結構了,隻不過這時 repos1 是個空庫。

你也可以使用--root選項設定根位置來限制伺服器的通路目錄,進而增加安全性和節約輸入svnserve URL的時間:

svnserve.exe --daemon --root drive:\path\to\repository

以前面的測試作為例,svnserve 将會運作為:svnserve.exe --daemon --root H:\svn

然後TortoiseSVN中的版本庫浏覽器URL縮減為:svn://localhost/repos1

五、将SVN注冊為系統服務 

你可能會問這樣豈不是每次啟動SVN伺服器都要輸入一次指令?怎樣才能讓SVN伺服器在開機的時候自動啟動呢?答案就是将SVN服務注冊到Windows系統服務,在Windows指令提示符裡執行指令

sc create SVN binpath= "\"D:\soft\subversion\bin\svnserve.exe\" --service -r H:\SVN" displayname= "SVN Service" depend= Tcpip start= auto,這個指令是不是有點長?其實很容易了解,sc是Windows自帶的系統服務注冊工具,微軟支援中心提供了詳細的說明,這裡我就不再複述了,

參數binpath= "\"D:\soft\subversion\bin\svnserve.exe\" --service -r H:\SVN"和我們前面手動啟動SVN伺服器的指令很像吧?隻是把-d改成了--service,這不難了解,因為現在是服務嘛。好了,現在已經大功告成了,重起一下試試吧。

PS:如果想從系統服務裡删除剛才注冊的SVN服務可以使用sc delete SVN指令。

六、配置使用者和權限

接下去就來看看SVN是如何設定權限的,還記得第一步建立SVN資料庫時提到的conf目錄吧,conf目錄裡有3個檔案,這3個都是文本檔案,用計事本打開它們就行了,我們先看

svnserve.conf檔案,anon-access項指定了未經驗證的使用者所具有的操作權限,它有3個有效值,分别是read,write,none,read為讀權限,write為寫權限,none為沒有任何權限,password-db項用來指定存放使用者名和密碼的檔案,authz-db項用來指定存放使用者權限的檔案,realm項用來指定驗證範圍,這項一般情況下用不到,以上4項預設都是被注釋掉的.#号為注釋符,要起用它們隻需要把注釋符去掉即可。

passwd檔案是預設存放使用者名和密碼的檔案,例如我設定一個Sol使用者,密碼為111111,隻需在[users]下添加Sol=111111即可,

authz檔案是預設指定存放使用者權限的檔案,[groups]代表分組,這裡我們設定個developer組,将前面建立的Sol使用者分到developer組裡,同樣隻需在[groups]下寫上developer=Sol即可,[/]代表根目錄,如果我們要設定developer組有完全的通路權限就在下面加上@developer=rw,前面加@符代表組,除此之外我們允許所有人都有讀取權限還要在下面加上*=r,SVN允許對每個目錄設定權限,設定方法和根目錄差不多,如果到這裡你還不是很明白那麼請看下面的例子。

用文本編輯器打開H:\svn\repos1\conf目錄,修改svnserve.conf:

将:

# password-db = passwd

改為:

password-db = passwd

即去掉前面的 # 注釋符,注意前面不能有空格。

然後修改同目錄的passwd檔案,增加一個帳号:

将:

[users]

# harry = harryssecret

# sally = sallyssecret

增加帳号:

[users]

#harry = harryssecret

#sally = sallyssecret

test = test

七、初始化導入

下面就是将我們的資料(項目)導入到這個版本庫,以後就由版本庫管理我們的資料。我們的任何改動都回被版本庫記錄下來,甚至我們自己丢失、改錯資料時版本庫也能幫我們找回資料。

比如,我在 d:\wwwroot 下有個 guestbook 檔案夾,裡面存放的是我編寫的留言簿程式。在此檔案夾上“右鍵 -> TortoiseSVN -> Import...” ,在彈出對話框的“URL of repository”輸入“svn://localhost/repos1/guestbook”。在“Import message”輸入“導入整個留言簿”作為注釋。

點 OK 後要求輸入帳号。我們在使用者名和密碼處都輸入 test 。完成後 guestbook 中的内容全部導入到了 svn://localhost/svn/repos1/guestbook 。

我們看到在 H:\svn\repos1 沒有任何變化,連個 guestbook 檔案夾都沒有建立,唯一的變化就是e:\svn\repos1容量變大了。實際上我們源guestbook中的内容已經導入 repos1 版本庫了,源 guestbook 檔案夾可以删除了。

需要注意的是,這一步操作可以完全在另一台安裝了 TortoiseSVN 的客戶機上進行。例如運作svnserve的主機的IP是133.96.121.22,則URL部分輸入的内容就是“svn://133.96.121.22” 。

八、基本操作流程

1、取出(check out)

取出版本庫到一個工作拷貝:

來到任意空目錄下,比如在f分區建立一個空檔案夾 f:\work 。“右鍵 -> SVN Checkout”。在“URL of repository”中輸入“svn://localhost/svn/repos1/guestbook”,這樣我們就得到了一份 guestbook 中内容的工作拷貝。

2、存入(check in)/送出(commit)

在工作拷貝中作出修改并送出:

在 guestbook 工作拷貝中随便打開一個檔案,作出修改,然後“右鍵 -> SVN Commit... ”。這樣我們就把修改送出到了版本庫,版本庫根據情況存儲我們送出的資料。

在修改過的檔案上“右鍵 -> TortoiseSVN -> Show Log” ,可以看到對這個檔案所有的送出。在不同的 revision 條目上“右鍵 -> Compare with working copy”,我們可以比較工作拷貝的檔案和所選 revision 版本的差別。