Good-bye Collabnet Subversion, Hello VisualSVN

一直以來,都是使用 Collabnet Subversion Server,而且每隔半年一年,若發現有新版本,就會嘗試將現有的版本升級。幾個月前,看到 Collabnet Subversion Server 改名字了,叫做 Collabnet  Subversion Edge,最近就抽空試裝了一下。好加在,就只是拿自己的 PC 試裝而已,沒有直接升級正式機的 Subversion Server。

我裝的版本是  Collabnet  Subversion Edge 1.3.0,內含 OpenSSL(所以支援 HTTPS 協定)。裝完之後,發現果然跟之前的版本差蠻多的。這個版本內含 Subversion Server 1.6.x,而且已經把 Apache 跟它自己的東西整合得更緊密,另外還提供了 web-based 管理介面。如果你想要升級到這個版本,請注意以下兩個重要變動:
  • 不再支援 svnserve 或 SSH 協定
  • 不再支援 BerkeleyDB (BDB) 格式的檔案庫
剛裝完新版本,覺得還不錯,使用 web 管理介面就能管理版本庫(repository)和基本的設定,而且啟用 HTTPS 協定只要點幾下滑鼠就完成了,不用像以前那樣手動下一堆指令,確實方便。可是,接下來卻發現一個問題:版本庫的目錄似乎不支援以前的子資料夾的方式了。比如說,以往我是將預設的版本庫實體位置放在 d:\SvnRepository\,然後設定 Apache 網站伺服器的虛擬目錄為 svn,讓它對應至 d:\SvnRepository\。此實體目錄底下可能有類似這樣的結構:

+ SvnRepository
   + MyThesis
   + Books
      + vsts
      + ooad
   + Projects
      + Prj1
      + Prj2

其中的 MyThesis 資料夾本身就是個單獨的版本庫,專門給論文寫作之用,Books 和 Projects 則是單純的資料夾,底下的各個子目錄才是真正的版本庫。以 Books\ooad 這個版本庫為例,我可以用類似 http://my-server/svn/Books/ooad 的網址來存取。可是裝了新版 Subversion Edge 1.3 之後,我試了好多種方法,組態檔改來改去,就是沒辦法成功。

新版 Subvesion Edge 的 web 管理介面只能建立像 MyThesis 這種位於第一層目錄的版本庫,這不要緊,反正裡面跑的還是 Apache server,原本的 httpd.conf 組態檔設定應該還能用才對。我只要把版本庫建立好,然後修改 httpd.conf,在裡面加上如 <location /svn/Books> 的區段就行了。結果並不是我想的那麼單純。

Collabnet Subversion Edge 的組態檔,預設是放在 c:\csvn\data\conf\ 目錄下,除了 httpd.conf 之後,裡面還多出了好幾個組態檔,像是 csvn_main_httpd.conf、csvn-wrapper.conf、svn_viewvc_httpd.conf、viewvc.conf 等等,讓人一下子不知道究竟該修改哪個組態檔才好,而且其中幾個組態檔的檔頭都有警告訊息,叫你別亂改:

# DO NOT EDIT THIS FILE IT WILL BE REGENERATED AUTOMATICALLY BY COLLABNET SUBVERSION

我先嘗試修改 httpd.conf,畢竟這是 Apache server 原本就有的組態檔。我從原先可以運作的組態檔中,把 <location> 區段複製過來,內容類似這樣:

<location /svn/Books>
    DAV svn
    SVNParentPath "d:/SvnRepository/Books"
    AuthType Basic
    AuthUserFile "D:/SvnRepository/MyAccount.pwd"
    AuthName "Subversion Repository"
    Require valid-user
</location>

重啟 Subversion Server 之後,用瀏覽器開啟網址 http://localhost/svn/Books/ooad,結果顯示錯誤:Could not open the requested SVN filesystem。

嘗試修改其他組態檔,結果都徒勞無功。這樣反覆 try 了好多次,花了好多時間,開始覺得自己有點傻,而新版本的組態檔設計也讓我開始反感。尋思:何不乾脆改用別的 subversion 套件?

兩年前,我曾試裝過 VisualSVN Server,當時還寫了一篇短文:使用 VisualSVN 迅速建立 Subversion 伺服器。印象中,這個套件很容易安裝,組態設定也很方便。於是,就下載了 VisualSVN Server 2.1.5 來試試看。

安裝過程還是跟以前一樣簡單,只有一個步驟要稍微看一下:


此步驟可以讓你指定:
  • 存放版本庫的實體路徑;
  • 是否使用 HTTPS 加密協定(幾次被入侵偵測系統冤枉之後,我一律使用 HTTPS);
  • 身分驗證的方式:使用 Subversion 內建的帳戶驗證,還是 Windows 整合式驗證。
裝完之後,會自動開啟 Windows 介面的 UI 管理工具:VisualSVN Server Manager。我先建立了一個使用者帳戶,並設定好密碼,然後再建立版本庫。跟 Collabnet Subversion Edge 的管理工具一樣,其建立版本庫的功能也沒有支援前面所說的子目錄結構。於是,我到安裝路徑 c:\Program Files\VisualSVN Server\conf\ 底下,用記事本開啟 httpd-custom.conf,把前面提過的 <location /svn/Books> 區段內容貼上去,存檔。然後重啟 VisualSVN Server,再用瀏覽器開啟網址  https://localhost/svn/Books/ooad,輸入帳號密碼之後....Ya! 瀏覽器成功顯示 ooad 版本庫的內容。從安裝到設定、建立使用者帳戶、建立版本庫、修改組態檔、以及測試版本庫能否順利存取,不用十分鐘就搞定了。
當然,VisualSVN Server Manager 還是不支援版本庫根目錄底下的子目錄,碰到這類子目錄時,它會顯示如下圖的錯誤訊息:

這倒沒有太大關係,眼下只要能夠先把我既有的版本庫都掛上來,都能順利運作就夠了。

跟 Collabnet Subversion Edge 比起來,VisualSVN Server 的組態檔設計單純多了,就只有 httpd.conf 和 httpd-custom.conf 兩個檔案。自訂的組態內容最好是寫在 httpd-custom.conf 裡面,比較好維護(httpd.conf 會 include 這個組態檔)。

目前就決定先使用 VisualSVN Server 一陣子看看,用戶端的部分,則仍是使用 TortoiseSVN

Post Comments

技術提供:Blogger.