如何迁移历史记录事件

更新:2007 年 11 月

本主题讨论如何将 Visual SourceSafe 所记录的历史记录事件迁移到 Team Foundation 中。

历史记录事件

历史记录事件被迁移到 Team Foundation 的等效区域中。这使您可以保持源文件的历史记录。文件版本的历史记录是通过重播创建该历史记录的事件来创建的。下面的表详细介绍每个历史记录事件是如何迁移的:

事件

迁移方法

添加文件或文件夹

文件添加事件在 Team Foundation 中创建该文件的第一个版本。文件夹添加事件在 Team Foundation 中创建该文件夹的第一个版本。如果添加的文件夹包含文件或文件夹,则将分别添加这些文件和文件夹。

编辑文件

文件编辑事件在 Team Foundation 中创建文件的一个新版本。

标记文件

在 Team Foundation 中,可以将标签应用到文件或文件夹的某个版本。在 Visual SourceSafe 中,可以显式或隐式地用标签标记文件。在 Visual SourceSafe 中用标签显示地标记一个文件时,将创建该文件的一个新版本,因此如果您获取该标签,您将获得与该文件的上一版本相对应的文件的内容。为了迁移显式标签,转换器会在 Team Foundation 中将该标签应用于与 Visual SourceSafe 中的标记版本相对应的版本。但是,它不创建新版本。

在 Visual SourceSafe 中将标签应用于文件夹时,该标签隐式应用于该文件夹下的所有文件和文件夹,并且不创建新版本。对于隐式标签,转换器不执行任何操作,原因是 Team Foundation 中的对应版本在迁移该文件夹上的显式标签期间会被自动标记。

标记文件夹

在 Visual SourceSafe 中将标签应用于文件夹时,该标签隐式标记该文件夹下的所有文件和文件夹,并且不创建新版本。在迁移这些文件夹时,转换器将标签应用于 Team Foundation 中该文件夹的对应版本。此操作自动将该标签应用于标记文件夹中的文件和文件夹的当前版本。

重命名、删除或撤消删除文件或文件夹

在迁移文件或文件夹的重命名、删除和撤消删除事件时,转换器重播这些事件以便在 Team Foundation 中创建该文件或文件夹的新版本。

移动文件夹

移动文件夹事件在 Team Foundation 中创建该文件夹的一个新版本。在 Visual SourceSafe 中,移动命令不更改文件夹的内容和历史记录,但是会将其记录在旧的父文件夹和新的父文件夹的历史记录中。移动文件夹时,Visual SourceSafe 无法重新构造旧版本的父文件夹。

在迁移后,将可以重新构造旧版本,这是由于迁移移动文件夹事件的方式所决定的。例如,如果将标签“LABEL1”应用到含有子文件夹 /B 的文件夹 $/A,稍后将 /B 移动到另一文件夹 $/C 中;然后在 Visual SourceSafe 中,如果您获取 $/A 上的“LABEL1”,您将不会得到 $/A/B。但在迁移到 Team Foundation 后,当您获取该标签时,您将获得已移动的文件夹 ($/A/B)。

迁移已移动的文件夹时,有三种可能的情况,它们有不同的结果,具体情况取决于迁移的内容:

  • 源文件夹和目标文件夹都迁移。没有数据丢失。在上一示例中,源文件夹 $/A 和目标文件夹 $/C 都迁移。

  • 只迁移目标文件夹。迁移后,移动的文件夹将出现在目标文件夹中,就像被添加到目标文件夹中一样,而实际上该文件夹是移来的。被移动的文件夹及其中的项在发生移动事件之前的历史记录不会迁移到 Team Foundation 中。就上一示例来说,子文件夹 /B 的移动事件将作为文件夹添加事件显示在 $/C 中。为了防止丢失历史记录,请将移动文件夹的源文件夹与目标文件夹一起迁移。运行迁移分析时,报告中将包含警告您这种数据丢失情况的部分。

  • 只迁移源文件夹。在迁移期间,移动文件夹及其中的项的历史记录不迁移到 Team Foundation 中。为了防止丢失历史记录,请将移动的 Visual SourceSafe 文件夹的源文件夹与目标文件夹一起迁移。运行迁移分析时,报告中将包含警告您这种数据丢失情况的部分。

说明:

如果移动文件夹事件与还原事件合并在一起,则历史记录可能不会正确迁移。

共享文件

在 Visual SourceSafe 中,您可以在多个文件夹间共享一个文件。在一个共享文件中所做的更改会在共享该文件的文件夹之间进行复制。在内部,Visual SourceSafe 会在共享文件间创建软链接。在 Visual SourceSafe 中,在技术上不共享文件夹。在 Visual SourceSafe 中共享一个文件夹时,将创建该文件夹的副本并共享该文件夹中的所有文件。

Team Foundation 没有与共享等效的功能。迁移共享文件的方法是在目标文件夹中创建一个文件版本,此版本与共享开始时的文件版本内容相同。从共享开始时起,对该共享文件所做的更改将由转换器分别复制到这两个文件版本。

共享并删除文件

共享后删除的文件作为共享文件来处理,只是忽略删除后执行的所有操作。

如果稍后对删除的共享文件执行撤消删除操作,则在迁移过程中,转换器会对撤消删除操作之后的每个操作(如编辑或重命名)报告错误。但是,在迁移撤消删除操作的过程中,转换器对该文件执行撤消删除编辑操作,以便该文件的内容与 Visual SourceSafe 中撤消删除的文件的内容相同。

如果稍后重命名被删除的共享文件,则转换器会在迁移重命名操作的过程中报告错误。重命名操作之后的操作将不会迁移,并且转换器对于每个这种操作都报告错误。

分支文件

共享是分支的前提条件。转换器无法将 Visual SourceSafe 分支映射为 Team Foundation 版本控制 分支。迁移共享文件会在目标文件夹中生成该文件的副本。迁移分支事件意味着对共享文件所做的更改不会再同时复制到两个文件版本中。因此,对任何分支所做的更改都迁移到 Team Foundation 中的其各自副本中。迁移报告会提供一个文件夹列表,这些文件夹包含在 Visual SourceSafe 中共享或分支的文件。

存档

在 Visual SourceSafe 中对文件或文件夹进行存档时,您可以完全移除文件或文件夹的历史记录,也可以从文件或文件夹的历史记录中移除部分版本。如果移除了历史记录,则转换器无法迁移已移除的版本。转换器忽略存档事件。

还原

在 Visual SourceSafe 中进行还原时,您可以还原存档文件或文件夹的历史记录。转换器会迁移文件和文件夹的还原后的历史记录。转换器忽略还原事件。

固定和取消固定

Team Foundation 版本控制 不支持固定;因此所有固定文件都通过创建两个标签的方式来进行迁移。PINNED_LATEST 标签适用于已固定文件的固定的版本及取消固定的文件的最新版本。PINNED 标签仅适用于已固定文件的固定的版本。迁移后,PINNED_LATEST 标签检索的文件与在 Visual SourceSafe 中执行 Get Latest 操作所获得的文件相同。但是,如果在固定文件后发生了签入以外的事件(例如重命名或删除文件),则 PINNED_LATEST 标签可能返回不同的文件。

请参见

概念

转换器如何对变更集进行分组以提高性能

其他资源

制定源代码管理迁移计划