将 TFVC 迁移到 Git - 是否应该迁移历史记录?

时间:2021-05-28 10:59:24

标签: git tfs tfvc

我希望从 TFVC 迁移到 TFS Git。

我注意到微软推荐:

  • "由于 TFVC 和 Git 存储版本控制历史记录的方式不同,我们建议您不要迁移历史记录。"

...没有详细说明为什么不推荐。

  • 从 TFVC 迁移到 Git 时不迁移历史记录的原因是什么?

信息:我们的代码库已有约 9 年历史,由 2 个主要项目组成,包含约 82k 个文件和约 400k 行代码,以及约 90k 个文件和约 500k 行代码

1 个答案:

答案 0 :(得分:0)

最终找到了这提供了一些信息: https://docs.microsoft.com/en-us/devops/develop/git/migrate-from-tfvc-to-git

<块引用>

在尝试使用 Git-TFS 进行迁移之前,请注意 TFVC 和 Git 存储历史记录的方式之间存在根本差异:

<块引用>
  • Git 将历史记录存储为存储库的及时快照,而 TFVC 记录发生在文件上的离散操作。 TFVC 中的更改类型(如重命名、取消删除和回滚)无法在 Git 中表达。它不会看到文件 A 被重命名为文件 B,它只会跟踪文件 A 被删除和文件 B 被添加到同一个提交中。
  • Git 没有 TFVC 标签的直接模拟。标签可以包含任何特定版本的任意数量的文件,并且可以反映不同版本的文件。尽管概念上相似,但 Git 标记指向某个时间点整个存储库的快照。如果项目依赖 TFVC 标签来了解交付的内容,则 Git 标签可能不会提供此信息。
  • TFVC 中的合并发生在文件级别,而不是整个存储库。只有一部分更改过的文件可以从一个分支合并到另一个分支。然后可以将剩余的更改文件合并到后续更改集中。在 Git 中,合并会影响整个存储库,并且不能将两组单独的更改视为合并。
<块引用>

由于这些差异,建议用户进行提示迁移并保持其 TFVC 存储库在线但只读,以便查看历史记录。