使用 VisualSVN 迅速建立 Subversion 伺服器

目前 Subversion 官網上面列了三種不同口味的 server 打包版本:
以往我一直是用 CollabNet 打包的版本,這個版本(我用的是 v1.5)有個小缺點:若要使用 Windows 帳戶驗證,還得自己手動調整一些設定(參考這篇:Subversion 從 1.4.x 升級到 1.5 的注意事項)。

近日手癢,試了一下 VisualSVN v1.7。安裝方法非常簡單,幾乎都是按「下一步」就裝完了。在安裝過程中會讓你指定身分驗證機制要採用 Windows 帳戶驗證還是 VisualSVN 本身維護的帳戶,以及要用 HTTP 還是 HTTPS 協定。參考以下畫面:


不用三分鐘就裝完了,裝完之後不需要手動編輯組態檔,也不用其他額外設定,一台 Subversion 伺服器就能開始運作了。連我原本使用 CollabNet Subversion server 建立的檔案庫,也都是直接複製到 VisualSVN 的檔案庫目錄下就能直接使用。不過,我原本的檔案庫就是用 VisualSVN 預設支援的 FSFS 格式,若檔案庫是之前的 BDB 格式,我就不確定能否直接掛上了。

VisualSVN 安裝完後,Windows 系統會多出一項服務:VisualSVN Server,如下圖所示:

此外,程式集裡面還有一個管理工具:VisualSVN Server Manager。你可以利用此工具修改 Subversion server 的相關設定,例如身分驗證方式、傳輸協定、檔案庫所在路徑等等;也可以管理你的檔案庫,包括:檢視檔案庫、設定檔案庫存取權限(No Access、Read Only、Read/Write),甚至編輯 hooks。

缺點

雖然 VisualSVN 有著安裝簡單、對 Windows 帳戶驗證的支援較強(Active Driectory 帳戶也支援)、提供視覺化管理工具等優點,但也有些缺點(這裡指的是 v1.7 的版本),例如:
  1. 不支援 svn:// 協定(svnserve)
  2. 預設的檔案庫目錄底下不能再建立子目錄
第二項缺點需要解釋一下。以往使用 CollabNET Subversion server 時,我可以在檔案庫路徑底下建一些子目錄來區分不同類型的專案,比如說,檔案庫位置在 D:\SvnRepos,我可能會在此目錄下另外建立三個子目錄:Books、Projects、Thesis,然後在這些目錄底下建立真正的 subversion 檔案庫。如此一來,檔案庫的 URL 會類似這樣:http://localhost/svn/Books/ooad。這種方式的好處是可以讓我依自己的習慣組織檔案庫所在目錄的樹狀結構。

可是 VisualSVN 預設不支援這樣的目錄配置。以剛才的例子來說,若嘗試 svn checkout http://localhost/svn/Books/ooad,結果會無法取出檔案。解決辦法是在 Apache 的組態檔中增加一個 URI 位置的設定,像這樣:
<Location /svn/Books/>
DAV svn

SVNListParentPath on
SVNParentPath "D:/SvnRepos/Books"
SVNIndexXSLT "/svnindex.xsl"

AuthName "Subversion Repositories"
AuthType Basic
AuthBasicProvider visualsvn
AuthzVisualSVNAccessFile "D:/SvnRepos/authz-windows"
AuthnVisualSVNUPN Off

require valid-user
</Location>
組態檔位於 Program Files\VisualSVN Server\conf\,此目錄底下有兩個組態檔,一個是預設的 httpd.conf,另一個是 httpd-custom.conf。從檔名可以看出,我們只要把自訂組態寫在 httpd-custom.conf 就行了,這樣就不用去動預設的組態檔。附帶一提,你不見得一定要用 SVNParentPath 來指定檔案庫路徑,還有一種方法是設定 SVNPath(適用於檔案庫散置各處,不在同一個父資料夾路徑下的情況)。

奇怪的是,CollabNet 和 VisualSVN 都是用 Apache HTTP Server,同樣的 SVNParentPath 設定卻有不同的作用,不知是否為二者採用之 Apache 版本不同所致,或者我漏掉了某個設定?

沒有留言:

技術提供:Blogger.
回頂端⬆️