如何将tfvc迁移到包括历史记录的Git

时间:2020-09-18 14:30:45

标签: git azure azure-devops tfvc git-tfs

我们计划从tfvc迁移到Git版本控制。

我们有一些GB的代码和数千个变更集。我阅读了一些文章并浏览了Microsoft文档,发现了2个选择。

  1. 提示迁移-我可以在其中使用Azure Devops内置工具“导入存储库”。它具有局限性,例如“导入的存储库”应为1GB,我们可以获得180天的历史记录。

  2. Git TFS-这符合我的要求。但不确定是否可以迁移整个代码和整个历史记录。

我该如何实现?除此之外,还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

git-tfsgit-tf工具工作得很好。 Git-tfs在自述文件中有一些很好的文档。不过请记住,它是如何工作的。 TFS非常有限。发生的是,您将提取所有tfs历史记录并从中创建一个本地git存储库。从那里,您可以将其放置到所需的任何git remote中。它应该能够保留历史记录和作者姓名。如果您要在Azure DevOps中转向git,则有migration tool可以为您提供帮助。

此外,请记住,这是一个很普遍的问题,已经asked before

答案 1 :(得分:1)

GIT-TFS-这适合我的要求。但不确定是否可以迁移整个代码和整个历史记录。

因为TFVC和Git存储数据的方式非常不同,所以没有工具是完美的。因此,您将不得不尝试许多事情并找到最适合您需求的方式。但是我很确定没有一个是完美的。

这里真正的2个选项是git-tfs和git-tf。

但是对于git-tfs有一些优势。参见:

What's the difference between git-tf and git-tfs?

我该如何实现?

我只能说些我在本文档中所说的话: https://github.com/git-tfs/git-tfs/blob/master/doc/usecases/migrate_tfs_to_git.md

但是由于这种迁移不是一个完美的过程,因此您将不得不做很多试验和错误,直到找到适合您的好方法。 所以从一个小的历史开始,因为从TFVC检索数据非常慢?

除了此以外,还有其他选择吗?

有一个完美的解决方案,但没有一个可以解决(但仍然是可以尝试的解决方案)

https://github.com/viceroypenguin/tfs-fast-export https://github.com/kunom/tfsdb-fast-export

如果搜索得很好,您会发现其他针对特定迁移工作了1或2次的自定义解决方案...

提示迁移-我可以在其中使用Azure Devops内置工具“导入存储库”。它具有局限性,例如“导入的存储库”应为1GB,我们可以获得180天的历史记录。

历史记录越大,迁移所有历史记录的意义就越小。 因此,仅迁移几个月并将TFVC历史记录保留为存档是很有意义的。

您还可以尝试通过使用git-tfs或git-tf复制此“尖端迁移”,只需选择要从哪个变更集开始迁移即可。

如果TFVC历史记录很奇怪并且您真的不需要它,那么最后的选择就是从最后一个变更集的检出开始。这就是微软的建议(即使我并不完全同意)。

这种迁移的成功是灵活的,接受它肯定不是完美的(主要是由于TFVC疯狂地存储数据并让您做奇怪的事情),并找到了继续的好方法! / p>