git - 如何将 tfvc 迁移到 Git(包括历史记录)

标签 git azure azure-devops tfvc git-tfs

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

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

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

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

我怎样才能实现这个目标?除此之外还有其他选择吗?

最佳答案

GIT-TFS - This suites my requirement. But not sure if it can migrate entire code and entire history.

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

这里你真正的两个选择是 git-tfs 和 git-tf。

但是 git-tfs 有一些优点。请参阅:

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

How can I achieve this?

除了我已经在本文档中添加的内容之外,我不能说太多: https://github.com/git-tfs/git-tfs/blob/master/doc/usecases/migrate_tfs_to_git.md

但由于这种迁移并不是一个完美的过程,因此您必须进行大量的试验和错误,直到找到适合您的好方法。 因此,从一个小的历史记录开始,因为从 TFVC 检索数据非常慢😕

And are there any options other than this?

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

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

如果您仔细搜索,您会发现其他自定义解决方案对于特定迁移有效 1 或 2 次...

tip migration - where i can use Azure Devops built-in tool "Import Repository". It has limitations like Imported repository should be 1GB and we can get 180 days of history.

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

您还可以尝试使用 git-tfs 或 git-tf 复制此“提示迁移”,只需选择要开始迁移的变更集即可。

当 TFVC 历史非常奇怪并且您并不真正需要它时,最后的手段可能是从最后一个变更集的 checkout 开始。这就是微软的建议(即使我不完全同意)。

此类迁移的成功在于灵活,接受它肯定不会完美(主要是由于 TFVC 存储数据的疯狂方式并让您做奇怪的事情)并找到继续前进的好方法!

关于git - 如何将 tfvc 迁移到 Git(包括历史记录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63957700/

相关文章:

wpf - WPF 应用程序的应用程序洞察

azure - 如何在 azure devops YAML 管道中使用单个代理执行多个作业/阶段

azure-devops - 当且仅当分支等于 yaml 中的 master 时,Azure 管道才会运行特定任务

rest - 适用于 ASP.NET Core 上的移动应用和网站的经过身份验证的 REST API

azure - 将 SSL 证书绑定(bind)到 Azure 托管 API 中的特定终结点

azure - 插槽交换时连接丢失

Git:--force-with-lease 和多个 pushurls

git - 无法选择性提交更改不存在的文件

ruby-on-rails - 如何确定哪个提交和/或哪个分支部署到 Heroku?

git - 在 Ubuntu 上设置本地 git 存储库