The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何透過 TortoiseSVN 對 TFS 專案進行版本控管(SvnBridge)

TFS (Team Foundation Server),一個讓人又愛又恨的工具,愛的是有完整 ALM 功能,可以使用工作項目追蹤 bugs, tasks, scenarios, test cases, …,恨的是版本控管工具實在太難用,雖然已經有 Team Foundation Server Power Tools 可以整合檔案總管 (Windows Shell Extensions) 進行版本控管操作,不過其 可用性 (Usability) 還是遠不如 TortoiseSVN 來的貼近人性,對熟悉 Subversion / TortoiseSVN 的我來說,使用 TortoiseSVN 進行 TFS 版本控管與版本審查是來的親切且熟悉的,因此我安裝了 SvnBridge Server 幫我實現利用 TortoiseSVN 進行 TFS 版本控管的願望。

多年前我曾經寫過一篇【如何透過 TortoiseSVN 存取 CodePlex 網站上的專案】文章,當時 SvnBridge 才剛推出,至今 SvnBridge 已經發展到了第6個版本,算已經非常穩定了,而且區分成 SvnBridge Client 與 SvnBridge Server 兩種版本,當初寫的文章就是現在的 SvnBridge Client 版本,讓你指定 TFS 的路徑並模擬一台 Subversion Server 在本地端。

如果要在公司內部所架設的 TFS 能夠直接從伺服器端直接提供 SvnBridge 的功能,就必須架設 SvnBridge Server 起來,以下就是架設的方式。

1. 下載 SvnBridge Server 至安裝 TFS 的那台伺服器

 

2. 解壓縮 SvnBridge-Server.zip 至任意目錄(也可以安裝至 C:\Inetpub\SvnBridge 目錄下)

以我個人的習慣,我會先利用 XCOPY 複製 c:\inetpub\wwwroot 目錄成為 c:\inetpub\SvnBridge 目錄

xcopy /O /X /K /E c:\inetpub\wwwroot SvnBridge\

注意:我的 c:\inetpub\wwwroot 是 Windows 預設的 wwwroot 安裝目錄,內容通常不太會去動他,這個目錄的預設 ACL 是很安全的 (除非你自己調動過),所以若要避免自行建立目錄有權限問題,我會直接複製這個目錄為新的網站目錄,並且把該目錄的內容清空,再把要部署的檔案複製進去。

安裝好之後的示意圖如下,基本上只會有一個 web.configbin\SvnBridgeServer.dll 兩個檔案而已:

如果你所安裝的伺服器跟 TFS 是同壹台的話,基本上什麼都不用設定就能用了。

 

3. 新增一個 IIS 站台,並設定適當的驗證方式

新增站台時我們指定 SvnBridge 慣用的 8081 連接埠,你也可以切換成其他埠號。
請注意:如果你有啟動 Windows 防火牆的話,記得要設定將 Port 8081 開放網路存取限制。

設定該站台的驗證方式

請注意:你必須啟用 ASP.NET 模擬摘要式驗證 就好,其他的驗證方式必須全部設定停用

設定完成!

接著我們用 TortoiseSVN 就可以直接透過這個站台的進行所有版本控管操作,假設我們以 Checkout 為例

你只要能夠正常瀏覽專案,就代表你已經可以使用 TortoiseSVN 瀏覽所有 TFS 上的專案了!

不過,這套 SvnBridge Server 的預設安裝只會自動對應出 DefaultCollection 這個 Team 專案集合,如果你有其他專案集合的話,則必須安裝另一個 SvnBridge Server 並且修改 Web.config 設定檔,指定非預設的 Team 專案集合的方式可以參考以下圖示,畫紅線的地方就是你要加上 Team 專案集合名稱的地方:

在 Web.config 中另一個要注意的是 LogPath 必須設定一個可以記錄 Logs 的實體路徑。

後記

最近在網路上看到兩篇 TFS v.s. SVN 的比較文章,文章 1 是一個熟悉 SVN 的人最近改用 TFS 而寫的比較文,文章 2 則是一個微軟 ALM MVP ( 非常熟悉 TFS ) 提出的比較觀點,蠻有趣的,有興趣的人可以去看看。

相關連結