了解 VSS 升级工具如何转换数据

Visual SourceSafe 升级工具是将您的基本代码从 Visual SourceSafe 一次性单向升级到 Team Foundation Server (TFS) 的简便方法。 只有当您准备在 Visual SourceSafe 中停止访问并开始在 TFS 中保持时,您才应使用这些工具来升级您的数据。

TFS 和 Visual SourceSafe 有明显的功能差异。 因此,在升级过程中,Visual SourceSafe 升级工具修改特定类型的数据。

主题内容

  • 如何创建变更集

  • 共享和固定项如何升级

  • 历史记录数据如何移植

    • 有关用户名和时间戳的数据的移植方式

    • 特定事件类型的转换方式

  • 版本控制绑定如何移植

如何创建变更集

TFS 版本控制在用户签入变更集时,将对多个文件的更改组合成一个单元。。 此单个单元称为 变更集

Visual SourceSafe 没有与变更集等效的功能。 但是,在转换过程中,只要满足以下条件,每组更改都会组合到一个变更集中:

  • 更改不会相互冲突。 例如,两个操作不会影响同一个文件或文件夹。

  • 所发生的各个更改之间的时间间隔不超过几分钟。

  • 更改是由同一用户签入的。

  • 这些更改具有相同的签入注释。

共享和固定项如何升级

在 Visual SourceSafe 中,您可在多个文件夹间共享一个文件。 在一个共享文件中所做的更改会在共享该文件的文件夹之间复制。 TFS 版本控制没有等效功能。 在升级期间,Visual SourceSafe 项目中的共享文件通过在 TFS 版本控制的服务器上创建其他独立的项目副本来进行升级。

TFS 版本控制也没有类似 Visual SourceSafe 中锁定功能的功能。 在升级期间,Visual SourceSafe 项目中的已固定项将转换为 TFS 版本控制的服务器上的 已标记项。 有关更多信息,请参见下一节。

历史记录数据如何移植

Visual SourceSafe 数据库中的项的历史记录中的每个事件都会作为变更集转换到 Team Foundation Server 上。 升级完成后,可在“历史记录”窗口中查看这些数据。 有关更多信息,请参见获取某项的历史记录

升级期间,会进行一些数据更改。

ms253166.collapse_all(zh-cn,VS.110).gif有关用户名和时间戳的数据的移植方式

Visual SourceSafe 数据库中的项的历史记录中的每个条目升级到 Team Foundation Server 服务器上的变更集时,将发生以下更改:

  • 将变更集的时间戳设置为该项的升级日期和时间。

  • 原始时间戳存储在变更集的“注释”字段中。

  • 用户名存储在变更集的“用户”字段或“注释”字段中,具体取决于用户映射过程的结果。

    备注

    如果要控制用户名分配到历史记录数据的方式,必须使用 VssUpgrade。请参见指定升级用户名的方式

ms253166.collapse_all(zh-cn,VS.110).gif特定事件类型的转换方式

编辑、重命名和删除等事件将直接从 Visual SourceSafe 数据库升级到 Team Foundation Server 上的变更集中。 但是,升级工具会以您可能预见不到的方式转换一些事件,如下表所示。

 Visual SourceSafe 事件

如何升级到 TFS 版本控制

添加文件或文件夹

此变更集是每个已升级文件和文件夹的历史记录中的第一个事件。 与在 Visual SourceSafe 中不同,对于其包含的每个子项的父级,不会记录任何事件。

分支

共享是 Visual SourceSafe 中分支的前置条件,但是,TFS 版本控制不支持共享。因此,升级分支文件可在目标文件夹中创建文件副本。

通过共享时复制现有文件的版本并在目标文件夹中放置副本,可将 Visual SourceSafe 数据库上的共享文件升级到 TFS 版本控制。 此后,每个变更集都将复制到该文件的两个副本中,直到分支事件发生。

Label

隐式标记的项目:在 Visual SourceSafe 中,当您标记某文件夹时,文件夹所含内容则为隐式标记。 升级进程显式标记团队项目中的所有已升级项目。

显式标记的文件: 在 Visual SourceSafe 中,当您显示标记单个文件时,会创建新版本的文件。升级进程将标签导入到 TFS 版本控制中适用的版本,但不会创建新版本。

说明说明
如果 Visual SourceSafe 数据库包含许多应用于多个文件的标签,则升级过程可能会延长。如果希望排除此数据,则必须使用 VssUpgrade,并将其配置为忽略标签。参见 <Label migrate="false" />

移动文件夹

“移动文件夹”事件会在 TFS 版本控制中创建该文件夹的一个新版本。

如果使用 VssUpgrade,除非同时升级源文件夹和目标文件夹,否则其将不会升级已移动的文件夹中各项的完整历史记录。 请参阅检查并解决“分析”功能找到的问题

说明说明
如果移动文件夹事件与还原事件组合,则可能不会正确升级历史记录数据。

还原

不升级还原事件之前产生的任何历史记录数据。

固定和取消固定

TFS 版本控制不支持固定。 升级工具通过创建两个标签升级锁定文件。

PINNED_LATEST 标签应用于已固定文件的固定版本以及已取消固定文件的最新版本。 PINNED 标签仅应用于已固定文件的固定版本。 升级后,PINNED_LATEST 标签将检索与在 Visual SourceSafe 中执行“获取最新版本”操作所获得的文件相同的文件。 但是,存在一种例外情况:如果固定文件后发生了签入以外的事件(如重命名或删除文件),则 PINNED_LATEST 标签可能会返回不同的文件。

共享

TFS 版本控制不支持共享。 通过共享时复制现有文件的版本并在目标文件夹中放置副本,可将 Visual SourceSafe 数据库上的共享文件升级到 TFS 版本控制。 此后,每个变更集都将复制到该文件的两个副本中。

撤消删除文件或文件夹

在文件或文件夹的撤消删除事件的升级期间,该工具将在 TFS 版本控制中重播该事件以创建新版本的文件和文件夹。

升级工具会创建一个变更集,其中包含文件或文件夹名称、撤消删除的日期和时间以及用户名。

版本控制绑定如何移植

升级工具端口将为每个解决方案导入版本控制绑定

下一步

准备从 Visual SourceSafe 升级