问题描述
我希望从 TFVC 迁移到 TFS Git。
我注意到微软推荐:
- "由于 TFVC 和 Git 存储版本控制历史记录的方式不同,我们建议您不要迁移历史记录。"
...没有详细说明为什么不推荐。
- 从 TFVC 迁移到 Git 时不迁移历史记录的原因是什么?
信息:我们的代码库已有约 9 年历史,由 2 个主要项目组成,包含约 82k 个文件和约 400k 行代码,以及约 90k 个文件和约 500k 行代码
解决方法
最终找到了这提供了一些信息: 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 存储库在线但只读,以便查看历史记录。