0871-63333123
當前位置:首頁 > 動態 >技術文章

啟動Subversion服務

網站建設開發中,在服務器端,打開一個命令行窗口,用CD命令進入 Subversion 安裝目錄下的 bin 目錄,運行如下指令:

svnserve -d -r E:\svn 其中的 -d 參數表示svnserve.exe 將會作為一個服務程序運行在后臺,而 -r 參數表示將 E:\svn 目錄指定為代碼庫的根目錄。這樣,當客戶端使用類似 svn://192.168.0.1/foo 這樣內容的 URL 來訪問服務器時候,其所訪問到的真實代碼庫,其實就是 E:\svn\foo

在服務器端的 E:\svn 目錄下,建立一個名為 arm 的代碼庫,命令如下:

E:\svn>svnadmin create arm 使用上述命令之后,如果不出問題的話,在 E:\svn 目錄下就會多出一個叫做 arm 的目錄,其下具備 confdavhookslocksdb 等子目錄或文件,此即一個名為arm的代碼庫。從此,通過 svn://192.168.0.1/arm 這樣的 URL,我們就可以對這個代碼庫進行訪問了。接下來就要進入本文的正題了,也就是權限配置部分了。

其實進入 arm\conf 目錄你就會發現,它下面已經存在三個寫了一些幫助信息和示例的配置文件,以幫助用戶盡早掌握其配置方法。這三個默認的配置文件分別是 svnserve.confpasswdauthz 。其中后兩者沒有后綴,對于 windows 系統的用戶來說,看起來總是有些怪異,所以在接下來的章節里面,我將它們兩個都給添加了個 conf 后綴,以便管理。

在服務器端,編輯代碼庫的 arm\conf\svnserve.conf 文件,如下:

[general]

极速时时彩password-db = passwd.conf

极速时时彩anon-access = none

auth-access = write

authz-db = authz.conf

在服務器端,新建 arm\conf\passwd.conf 文件,如下:

[users]

morson = ShowMeTheMoney

michael = mysecretpassword

scofield = hellolittilekiller

lincon = asyouknows111

rory = 8809117

linda = IlikeWorldCup2006

建立目錄訪問權限控制文件

在服務器端,新建arm\conf\authz.conf 文件,內容如下:

[groups]

g_vip =morson

g_manager= michael

g_beijing= scofield

g_shanghai= lincon

g_headquarters= rory, linda

极速时时彩g_docs =linda

[arm:/]

极速时时彩@g_manager= rw

* = r

[arm:/diary/headquarters]

@g_manager= rw

@g_headquarters= rw

@g_vip =r

* =

[arm:/diary/beijing]

@g_manager= rw

@g_beijing= rw

@g_vip =r

* =

[arm:/diary/shanghai]

@g_manager= rw

极速时时彩@g_shanghai= rw

@g_vip =r

* =

[arm:/ref]

极速时时彩@g_manager= rw

@g_docs= rw

* = r

[arm:/temp]

* = rw

導入代碼

在客戶機 F:\temp 目錄下,建立好前述“背景假設”一節中描述的目錄結構,然后用命令 F:\temp>svn import arm svn://192.168.0.1/arm --username michael--password mysecretpassword 導入整個目錄結構。

這條指令的精確意思是,將 arm 目錄下面的所有東西,導入到那個名叫 arm 的代碼庫中去。如果你不指定源目錄,則 svn 會默認將當前目錄作為源目錄。比如說,你處于 F:\temp 目錄下的時候,直接執行 svn import svn://192.168.0.1/arm ,那么當你取出你的代碼的時候,你會發現,居然多了一層名為 arm 的目錄。結果,你就必須使用類似 svn://192.168.0.1/arm/arm 這樣怪異的URL,才能夠正確訪問到你的代碼們。

這一點粗看好像不是特別重要,不過聯想到前述的目錄授權規則,可都是按照標準的項目目錄結構來設計的。突然之間,你項目的根目錄之上,多出了一個名為 arm 的目錄,那么我們的所有目錄授權規則,基本上都要全部改過了,否則除了根目錄,你永遠會得到一個莫名其妙的“access denied”。由于 Subversion 在這一步驟上的界面不夠人性化,因此這是初學者很容易弄混的地方之一。

測試

在服務器上,打開一個 DOS Prompt窗口,輸入如下指令:

极速时时彩svn cosvn://127.0.0.1/arm --no-auth-cache --username rory --password 8809117

我們應該得到如下目錄結構:

Arm

├─diary

└─headquarters

├─ref

└─temp

然后修改ref目錄下任意文件并提交,服務器將會報錯“Access denied”,Bingo!

詳細說明

下面將詳細兩個配置文件:svnserve.conf authz.conf,通過對配置逐行的描述,來闡明其中的一些細節含義。

這里首先要注意一點,任何配置文件的有效配置行,都不允許存在前置空格,否則程序可能會出錯,給你一個 Option expected 的提示。  

极速时时彩svnserve.conf

首先,我們告訴 svnserve.exe,用戶名與密碼放在passwd.conf 文件下。當然,你可以改成任意的有效文件名,比如默認的就是 passwd:

极速时时彩password-db= passwd.conf

接下來這兩行的意思,是說只允許經過驗證的用戶,方可訪問代碼庫。目前只允許 read write none 三種值

  anon-access = none

  auth-access = write

接下來就是最關鍵的一句呢,它告訴svnserve.exe,項目目錄訪問權限的相關配置是放在 authz.conf 文件里:

authz-db= authz.conf

 

啟動Subversion服務_昆明網站建設