您可以利用 Visual SourceSafe 和 Team Foundation 源代码管理 完成下列同样的基本任务:同时开发产品的多个版本,在不影响其他版本的情况下对产品的一个已发布版本进行更改,快速检索一批相关文件,确定做出更改的用户 和时间,比较文件的两个版本以及将更改从一个版本移至其他版本。
Team Foundation 源代码管理 客户端界面旨在使 Visual SourceSafe 用户所熟悉。这两种产品都提供了命令行客户端和 Visual Studio 2005 集成。Team Foundation 源代码管理 没有单独的用户界面,这一点与 Visual SourceSafe 相同。
尽管它们具有许多相似之处,但 Team Foundation 和 Visual SourceSafe 基本上是不同的。本主题分两个主要部分来详细描述这些不同之处:
结构区别部分描述了 Team Foundation 和 Visual SourceSafe 之间在技术和操作上的区别。
功能区别部分列出了只存在于一种产品中的功能,描述了细微的功能更改,按产品标识了不同的默认设置,并解释了这些更改对您的团队使用 Team Foundation 更有效地进行开发有哪些帮助。
结构区别
Visual SourceSafe 是仅包含客户端的源代码管理系统。它的客户端(如 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 最多可支持五百名用户的团队,而 Visual SourceSafe 建议的团队人数是二十或更少。Team Foundation 服务器包含的数据量可达到 SQL Server 数据库允许(千兆字节)且您的硬件可支持的最大数据量,而 Visual SourceSafe 建议的大小限制是 4 GB。
功能差异
变更集
从概念上来说,Visual SourceSafe 数据库和 Team Foundation 源代码管理服务器的内部结构类似。这些数据库和服务器都按分层的形式进行组织。文件夹包含文件,而文件包含由编号和创建日期/时间标识的版本。
Team Foundation 引入了一个 Visual SourceSafe 中没有的概念:变更集。变更集是 Team Foundation 存储与单个签入操作相关的下列所有内容的逻辑容器:文件和文件夹修订、指向相关工作项的链接、签入说明、签入注释以及提交更改的用户等其他信息。有关更多 信息,请参见使用源代码管理变更集。
共享和固定
Team Foundation 没有与 Visual SourceSafe 的共享或固定功能等效的命令。
在将 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,则对“将 $F 移出 S”操作创建 D 的新版本,并对“已将 $F 移入 D”操作创建 S 的新版本。在 Team Foundation 中,“重命名”操作只创建 F 的新版本。
签入和签出的区别
在 Visual SourceSafe 中,只有在编辑文件时才需要执行显式签出和签入操作。在 Team Foundation 中,每个操作都需要执行显式签出和签入操作。
Team Foundation 中工作方式不同的功能
与 Visual SourceSafe 不同,Team Foundation 在您签出文件时不执行静态 Get 操作。
在 Team Foundation 中,多个用户可以同时对同一项进行签出和更改。在 Visual SourceSafe 中,默认情况下以独占方式执行签出。但您可以在 Team Foundation 中锁定某一文件,以防止其他用户签出该文件或签入更改。有关更多信息,请参见了解锁定类型。
分支和合并 由于 Visual SourceSafe 并不存储文件或文件夹的两个分支之间的合并历史记录,因此 Visual SourceSafe 只支持非常基本的分支和合并功能。但 Team Foundation 源代码管理 确实支持合并历史记录。在 Visual SourceSafe 中,由于没有合并历史记录,进行的合并最终是无依据的。
签出操作不对正在签出的文件执行 Get Latest 操作
当您执行 Get 操作以用一组文件填充工作区时,将从源代码管理创建一个一致的快照。通常,系统上源代码的配置表示 Team Foundation 源代码管理 服务器中已知一起运行的文件的时间点快照,因此能够进行生成和测试。
作 为在工作区中执行操作的开发人员,您将被隔离,不受其他开发人员所做更改的影响。您可以根据需要执行 Get 操作,以控制何时接受来自其他开发人员的更改。理论上说,当您这么做时,将更新源代码的整个配置,而不仅仅是一两个文件。其原因是一个文件的更改通常取决 于其他文件的相应更改,因此您必须确保您仍具有一个能够进行生成和测试的一致的源代码快照。
这 就是签出操作不对正在签出的文件执行 Get Latest 操作的原因所在。更新正在签出的那个文件将违反一致的快照逻辑,因此可能会导致无法生成或测试源代码配置。作为一种备选方法,Team Foundation 会强制您在签入更改之前的某一时间点执行 Get Latest 操作,以便在您尝试签入更改且没有最新副本的情况下,用解决冲突对话框向您提示。
Visual SourceSafe 中不存在的 Team Foundation 功能
Team Foundation 中不存在的 Visual SourceSafe 功能
-
共享
-
固定
-
存档和还原
-
销毁
-
关键字扩展