Visual SourceSafe 是為專業軟體開發人員所設計的原始檔控制工具。

Team Foundation 是一套變更管理系統,可針對開發小組提供整合式原始檔控制、問題追蹤以及流程管理等功能。

 

Visual SourceSafe 和 Team Foundation 版本控制可���您完成一些相同的基本工作:

  • 同時開發一個以上版本的產品

  • 對已發行版本的產品進行變更而不影響其他版本

  • 快速擷取一批相關的檔案

  • 判斷進行變更的人員以及時間

  • 比較檔案的版本

  • 將變更從某個版本移至另一個版本

Team Foundation 版本控制用戶端介面是針對熟悉 Visual SourceSafe 的使用者所設計。這兩個產品都提供了命令列用戶端和 Microsoft Visual Studio Team System 整合。Team Foundation 版本控制並沒有像 Visual SourceSafe 一樣,提供個別的使用者介面。

不過,儘管有許多相似之處,Team Foundation 和 Visual SourceSafe 仍有基本上的差異。

以下會分成兩個部份,以便詳述這些差異:

1. 架構差異:說明 Team Foundation 與 Visual SourceSafe 之間在技術上和操作上的差異。

2. 功能差異:列出一些某個產品提供而另一個產品不提供的功能、說明次要功能變更、識別因產品而異的預設設定,以及說明這些變更如何協助您的小組更有效使用 Team Foundation 進行開發。

Part I . 架構差異

SourceSafe Explorer 和 Visual Studio 的外掛程式會讀取和寫入 Visual SourceSafe 資料庫,這個資料庫是通常儲存在共用網路資料夾中的檔案集合。

Team Foundation 是一套主從式原始檔控制系統,這套系統會使用 .NET Web 服務來存取儲存在 SQL Server 資料庫中的項目。Team Foundation 原始檔控制的架構可提供強化的效能和可靠性。

安全性和專案權限

您在 Visual SourceSafe 系統管理員程式中設定的 Visual SourceSafe 使用者權限和指派與 Visual SourceSafe 資料庫資料夾的 Windows 共用權限無關。雖然您可以針對特定 Visual SourceSafe 專案或個別的 Visual SourceSafe 使用者設定權限和指派,不過必須針對 Visual SourceSafe 資料庫資料夾授與所有 Visual SourceSafe 使用者相同的使用權限。因此,所有 Visual SourceSafe 使用者 (不論其使用 Visual SourceSafe 系統管理員程式所指定的專案層級權限為何) 都可以存取共用資料夾而且可以完全控制所有 Visual SourceSafe 資料。

在 Team Foundation 中,特定使用者的操作權限和專案層級存取權限會繫結至 Windows 使用者帳戶。使用者驗證是由 Internet Information Server 安全地執行。SQL Server 資料庫的個別存取權不需要授與給執行原始檔控制作業的個別使用者。因此,產生的 Team Foundation 安全性基礎結構不但強固、安全,而且容易管理。

可靠性

由於 Visual SourceSafe 沒有伺服器元件,因此將資料從用戶端傳輸至資料庫的相關作業都是非交易式的。這表示如果發生問題,就無法復原作業。在極少數的狀況下,萬一寫入作業中途發生網路連線中斷的問題,則受影響檔案的完整性就可能會遭受危害並遺失資訊。

Team Foundation 是一套主從應用程式,其中資料庫內的寫入作業都是經由不受網路連線問題影響的預存程序進行。此外,某些作業是使用交易進行,以便可以在發生錯誤時復原這些作業。這種架構可確保您的原始程式檔不會在渾然不知的情況下損毀。此外,它還可確保原始檔控制伺服器會同時認可所有含有相依變更的檔案群組,就如同幾乎已完整測試的變更集

延展性

Team Foundation 最多可以支援 2000 位使用者的小組,而 Visual SourceSafe 的建議則是 20 人以下的小組。Team Foundation 伺服器可以包含如同 SQL Server 資料庫允許 (TB) 且硬體可支援的資料量,而 Visual SourceSafe 資料庫的建議大小限制則為 4 GB。

Part II . 功能差異
變更集

就概念而言,Visual SourceSafe 資料庫和 Team Foundation 原始檔控制伺服器的內部結構很類似。其資料庫和伺服器的組織方式都是採用階層結構。也就是說,資料夾會包含檔案。檔案則包含按照編號和建立日期/時間所識別的版本。

Team Foundation 提出一項稱為變更集的概念。Visual SourceSafe 中並沒有此概念。變更集是指邏輯容器,其中 Team Foundation 會儲存與單一簽入作業相關的所有項目。例如,檔案和資料夾修訂、相關工作項目的連結、簽入提示、簽入註解以及其他資訊 (例如送出變更的人員)。如需詳細資訊,請參閱使用版本控制變更集

共用和固定

對於 Visual SourceSafe 的共用和固定功能,Team Foundation 並沒有對等的命令。當您將 Visual SourceSafe 專案移轉至 Team Foundation 時,Visual SourceSafe 資料庫中的固定功能就會以標籤來取代。

Team Foundation 中儲存記錄之方式的差異

Visual SourceSafe 和 Team Foundation 會以不同的方式來儲存下列動作的記錄。

    • 加入和建立:在 Visual SourceSafe 中,只要加入檔案或資料夾就會建立父代和檔案的版本。在父代記錄中,此動作會記錄成「加入」,而在檔案記錄中,此動作會記錄成「建立」。在 Team Foundation 中,加入檔案或資料夾只會以「加入」動作來建立檔案或資料夾本身的版本。系統並不會針對此動作建立父代版本。

    • 重新命名、刪除和取消刪除:在 Visual SourceSafe 中,這些動作都會建立父代的新版本。而在 Team Foundation 中,這些動作則會建立項目本身的新版本。

    • 移動:在 Visual SourceSafe 中,當您移動資料夾時,就會同時建立來源和目的父代資料夾的新版本,並針對將資料夾移入或移出父代的每個父代記錄動作。系統不會針對資料夾 F 建立任何版本。例如,您將資料夾 F 從來源 S 移至目的 D,就會以「從 S 移動 $F」的動作建立 D 的新版本,而且會以「將 $F 移至 D」的動作建立 S 的新版本。在 Team Foundation 中,系統只會以「重新命名」的動作建立 F 的新版本。

簽入和簽出的差異

在 Visual SourceSafe 中,只有當您要編輯檔案時,才需要明確簽出和簽入。在 Team Foundation 中,每個動作都需要明確簽出和簽入。

在 Team Foundation 中以不同方式運作的功能

根據預設,Team Foundation 並不會在您簽出檔案時執行無訊息的 Get 作業。

在 Team Foundation 中,多位使用者可以同時簽出並變更相同的項目。在 Visual SourceSafe 中,簽出預設是獨佔的。不過,您可以在 Team Foundation 中鎖定檔案,以防止其他使用者簽出此檔案或簽入變更。如需詳細資訊,請參閱瞭解鎖定類型

分支和合併:Visual SourceSafe 對於分支和合併提供非常基本的支援,因為 Visual SourceSafe 並不會儲存兩個檔案或資料夾分支的合併記錄。不過,Team Foundation 版本控制則支援合併記錄。如果沒有合併記錄,您就如同在 Visual SourceSafe 中進行無基底的合併一樣。

簽出時取得最新的版本

當您在 Visual SourceSafe 內簽出檔案時,Visual SourceSafe 會從原始檔控制擷取最新版本的檔案。您可以透過兩種方式在 Team Foundation 版本控制內設定簽出行為。如果您希望這項簽出行為與 Visual SourceSafe 的簽出行為相同,可以將簽出設定設為在簽出時取得最新版本的項目。如需詳細資訊,請參閱 HOW TO:設定簽出設定

您也可以將簽出行為設定為將檔案的本機複本標示為已簽出,而不從伺服器取得最新版本的檔案。在執行取得作業以擷取一組檔案時,這項簽出行為將非常有用。一般而言,電腦上原始檔的組態代表 Team Foundation 版本控制中已知要共同運作之特定檔案的時間點快照集 (Snapshot),因此能夠一起進行建置和測試。

身為在工作區中工作的程式開發人員,您與其他程式開發人員所做的變更會相互隔離。您可以控制想要接受其他程式開發人員所做變更的時機,只要視情況執行取得作業即可。最理想的狀況是,當您進行此作業時,就會更新整個原始檔的組態,而不是只有一兩個檔案。原因是,某個檔案中的變更通常會相依於其他檔案中對應的變更。這項簽出行為可確保您永遠都保有原始檔的一致快照集,以便能夠進行建置和測試。

當您簽入變更時,Team Foundation 會將您的變更與曾對伺服器版本所做的變更合併。如果偵測到任何衝突情形,便會出現 [解決衝突] 對話方塊提示。

Visual SourceSafe 中不存在的 Team Foundation 功能
Team Foundation 中不存在的 Visual SourceSafe 功能
    • 共用

    • 固定

    • 封存和還原

    • 關鍵字展開