啟動svnserve服務(wù)
svnserve 是一個輕量級的服務(wù), 使用自定義的協(xié)議通過TCP/IP與客戶端通訊。
客戶端通過由 svn:// 或者 svn+ssh:// 開始的URL訪問svnserve服務(wù)器。
啟動服務(wù)器
端口監(jiān)控(inetd)模式
如果你打算用端口監(jiān)控來啟動處理客戶的訪問請求的進程,你可以通過傳入?yún)?shù)-i來啟動:
svnserve -i
當使用-i參數(shù)啟動服務(wù)的時候,svnserve通過stdin和stdout用自定義協(xié)議和客戶端
通訊。同時服務(wù)偵聽3690端口。
獨立端口監(jiān)控進程
使用參數(shù)-d啟動服務(wù)作為一個獨立的端口監(jiān)控進程。
svnserve -d
當運行svnserve在獨立端口監(jiān)控模式時,你可以使用--listen-port=和--listen-host=參數(shù)來自定義需要的端口和主機名稱。當前模式默認的端口是3690。
當然,也有第三種方法啟動svnserve,也是使用“隧道模式”,使用-t參數(shù)啟動服務(wù)。這個模式要求遠程服務(wù)程序,如RSH或SSH,已經(jīng)成功驗證用戶,并且使用已經(jīng)校驗的用戶啟動一個屬于該用戶的svnserve進程。當使用該模式提供服務(wù)時,要確認啟動的用戶帳戶具備對Repository的讀/寫權(quán)限。
設(shè)置項目目錄
當svnserve開始運行時,它將會暴露所有的Repository到網(wǎng)絡(luò)上。不過,當客戶端需要獲取一個Repository的內(nèi)容時,需要指定Reopsitory的路徑。例如:一個Repository放在文件路徑
C:/Project Repository/Project1
那么當客戶端訪問時,需要指定路徑:
svn://host/C:/Project Repository/Project1
所以,為了增加保密性,你可以使用參數(shù)-r指定需要暴露的Repository的路徑,當用戶訪問時,只需指定Repository的名稱即可。例如上面的Repository,當啟動服務(wù)時,使用如下的方法:
svn -d -r C:/Project Repository
那么當客戶端訪問時,則使用
svn://host/Project1
可以獲取數(shù)據(jù)了。
內(nèi)置的驗證和授權(quán)
當客戶端連接到一個svnserve進程時,下面的流程會觸發(fā):
1、客戶選擇一個指定的Repository;
2、服務(wù)處理Repository的配置文件 conf/svnserve.conf文件,并且開始執(zhí)行在其中定義的所有驗證和授權(quán)策略;
3、依賴與情形和授權(quán)策略:
a)客戶端也許允許匿名訪問而不需要驗證,或者
b)客戶但也許需要在任何時候被要求驗證,或者
c)假如處于"隧道模式"中,客戶端將聲明自己已經(jīng)可以被外部驗證。
很顯然,如上所說,用戶文件是一個名為svnserve.conf的,放在conf目錄下的文件。
現(xiàn)在我們來看看如何配置這個文件:
這個配置文件放置在Repository的目錄中的conf目錄下,它有兩個節(jié)點:
[general]
[users]
其中,[general]的配置信息有:
anon-access = read
auth-access = write
其中表示對于驗證有效的以及沒通過驗證的用戶可以做什么事情。分別有read, write和none
[users]的標簽的配置內(nèi)容有:
USERNAME = PASSWORD
password-db = passwd
realm = My First Repository
其中表示,用戶名對應(yīng)的密碼是什么,或者指定一個存儲用戶名和密碼的文件的相對或路徑以及指定了Repository的驗證領(lǐng)域。如果兩個Repository有相同的驗證領(lǐng)域,那么它們應(yīng)該有相同的密碼數(shù)據(jù)庫,反之亦然。默認的領(lǐng)域是指向當前的Repository的路徑,與服務(wù)器的Repository的根目錄相關(guān)。