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

TFS ([Team Foundation Server](http://en.wikipedia.org/wiki/Team_Foundation_Server))，一個讓人又愛又恨的工具，愛的是有完整 ALM 功能，可以使用工作項目追蹤 bugs, tasks, scenarios, test cases, …，恨的是版本控管工具實在太難用，雖然已經有 [Team Foundation Server Power Tools](http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f/) 可以整合檔案總管 (Windows Shell Extensions) 進行版本控管操作，不過其 **可用性** (Usability) 還是遠不如 [TortoiseSVN](http://tortoisesvn.net/) 來的貼近人性，對熟悉 Subversion / TortoiseSVN 的我來說，使用 [TortoiseSVN](http://tortoisesvn.net/) 進行 TFS 版本控管與版本審查是來的親切且熟悉的，因此我安裝了 SvnBridge Server 幫我實現利用 [TortoiseSVN](http://tortoisesvn.net/) 進行 TFS 版本控管的願望。

多年前我曾經寫過一篇【[如何透過 TortoiseSVN 存取 CodePlex 網站上的專案](/post/2007/12/26/How-to-access-CodePlex-Project-Source-Code-by-using-TortoiseSVN.aspx)】文章，當時 SvnBridge 才剛推出，至今 SvnBridge 已經發展到了第6個版本，算已經非常穩定了，而且區分成 SvnBridge Client 與 SvnBridge Server 兩種版本，當初寫的文章就是現在的 SvnBridge Client 版本，讓你指定 TFS 的路徑並模擬一台 Subversion Server 在本地端。

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

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/b74af710e8bb8e8ee290-image_505.png)

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

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

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/26012b3907a17baa2f80-image_506.png)

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

安裝好之後的示意圖如下，基本上只會有一個 web.config 與 bin\\SvnBridgeServer.dll 兩個檔案而已：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/0546a00280901a342924-image_507.png)

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

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/7a917bc904e7197cf73f-image_508.png)

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/d5f9f36d4e011459bb91-image_509.png)

設定該站台的驗證方式

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/6030d7b22f6fa226e107-image_510.png)

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/b6844e9bd7b2b1aff7fe-image_511.png)

設定完成！

接著我們用 [TortoiseSVN](http://tortoisesvn.net/) 就可以直接透過這個站台的進行所有版本控管操作，假設我們以 Checkout 為例

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/8edf7fc10d9976314916-image_512.png)

你只要能夠正常瀏覽專案，就代表你已經可以使用 [TortoiseSVN](http://tortoisesvn.net/) 瀏覽所有 TFS 上的專案了！

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/01e6d527945c89bc59fe-image_513.png)

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/ff2eb5f5ebff2232fec3-image_514.png)

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

**後記**

最近在網路上看到兩篇 TFS v.s. SVN 的比較文章，[文章 1](http://dobrzanski.net/2010/04/17/tfs-subversion/) 是一個熟悉 SVN 的人最近改用 TFS 而寫的比較文，[文章 2](https://web.archive.org/web/20110426115654/http://blog.hinshelwood.com:80/hinshelm/archive/2010/10/14/tfs-vs.-subversion-fact-check.aspx) 則是一個微軟 ALM MVP ( 非常熟悉 TFS ) 提出的比較觀點，蠻有趣的，有興趣的人可以去看看。

**相關連結**

-   SvnBridge - Use TortoiseSVN with Team Foundation Server

-   安裝說明

-   [Team Foundation Server Power Tools September 2010](http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f/)
-   [SvnBridge and TFS2010](https://web.archive.org/web/20110213062610/http://www.dscoduc.com:80/2010/07/svnbridge-and-tfs2010)
-   [Essential Power Tools.](http://msdn.microsoft.com/en-us/magazine/cc721612.aspx)
-   [從 SVN 移轉到 TFS 2005 / 2008 的工具](https://dotblogs.com.tw/franma/2009/07/13/9383)
