从 TFS 迁移到 Azure DevOps
Migrate from TFS to AzureDevOps
我们正计划将一个大型团队项目从 TFS 迁移到 Azure DevOps。 TFS 存储库是经典的 TFVC,工作项模板是定制的 CMMI 模板。要求是将源代码存储库转换为具有历史记录的 git,并在迁移时将自定义的 CMMI 模板转换为 Scrum 工作项。我们还被问及保持源代码和工作项之间关系的可能性。
我已经阅读了很多文章和博客。 tfsmigrator、git-tfs、vsts-wi-migrator 等工具和选项很少。
但是我无法理解这个要求是可行的。微软甚至做了一个干净的开始,并将其作为首选。
我需要 comments/case 个 azure devops 社区的故事。
理论上,有很多可能性,但在实践中,据我所知,世界上只有少数人可以执行您提议的迁移。 Martin Hinshelwood 和 David Corbin 似乎专门研究这些类型的问题。我有相当多的经验,但我似乎总能从您的一些关键要求中脱颖而出,因为它们需要大量工作,可能代价高昂,而且几乎不可能 100% 实现。
如果我必须这样做,我会尝试说服您满足您的一些要求。我会尝试说服您采取以下路径:
- 设置一个 TFS 服务器的克隆来测试这个过程几次。
- 在您当前的 TFS 上使用 witmorph 等工具将您的 CMMI 模板转换为就地 Scrum。这已经是相当多的工作了,因为没有明确的一对一路径可供选择。现在 TFS 允许就地工作项类型更改,您可能需要更新 witmorph 以利用这些功能。
- 然后在接触源之前直接迁移到 Azure DevOps。
- 更新您的 TFVC 签入评论以包含关联的工作项 ID。您可以使用 similar script to this 遍历所有评论并使用
#1234
工作项 ID 更新它们。
- 然后使用“Import from TFVC”将过去 6 个月从 TFVC 导入到 Git。
- 保留旧的 TFVC 存储库并将其设为只读。
这样您就可以保留您的历史记录。完全保真迁移不是完全可能的(TFVC 不是 Git,有些东西不会转换过来)。如果您觉得这很重要,您也会在 Git 中获得相当数量的历史记录。您的工作项将保持与 TFVC 的链接,因为您已经将它们就地变形,它们的 ID 不会更改并且不需要重新链接。鉴于您已经更新了签入描述,提交也应该自动关联到您现有的工作项。
构建、测试结果、发布等其他内容也将以这种方式完全迁移,您最终非常接近目标解决方案的样子。
[杰西 - 谢谢你的美言]
是的,我做了很多与 TFS 相关的升级,其中许多是到 Azure DevOps 的高保真迁移。
正如 Jesse 所指出的,TFVC 不是 Git - 并且存在根本的概念差异。我坚信两者都有其优点(和局限性),而不是认为一个普遍优于另一个。
说到历史,准确地将其中一个捕获的内容表示为另一个是不切实际的。将历史保留在原始 VCS 中并设置一个干净的环境以便在新版中继续前进通常会更好。
欢迎直接联系我:david.corbin@dynconcepts.com
我们正计划将一个大型团队项目从 TFS 迁移到 Azure DevOps。 TFS 存储库是经典的 TFVC,工作项模板是定制的 CMMI 模板。要求是将源代码存储库转换为具有历史记录的 git,并在迁移时将自定义的 CMMI 模板转换为 Scrum 工作项。我们还被问及保持源代码和工作项之间关系的可能性。 我已经阅读了很多文章和博客。 tfsmigrator、git-tfs、vsts-wi-migrator 等工具和选项很少。 但是我无法理解这个要求是可行的。微软甚至做了一个干净的开始,并将其作为首选。 我需要 comments/case 个 azure devops 社区的故事。
理论上,有很多可能性,但在实践中,据我所知,世界上只有少数人可以执行您提议的迁移。 Martin Hinshelwood 和 David Corbin 似乎专门研究这些类型的问题。我有相当多的经验,但我似乎总能从您的一些关键要求中脱颖而出,因为它们需要大量工作,可能代价高昂,而且几乎不可能 100% 实现。
如果我必须这样做,我会尝试说服您满足您的一些要求。我会尝试说服您采取以下路径:
- 设置一个 TFS 服务器的克隆来测试这个过程几次。
- 在您当前的 TFS 上使用 witmorph 等工具将您的 CMMI 模板转换为就地 Scrum。这已经是相当多的工作了,因为没有明确的一对一路径可供选择。现在 TFS 允许就地工作项类型更改,您可能需要更新 witmorph 以利用这些功能。
- 然后在接触源之前直接迁移到 Azure DevOps。
- 更新您的 TFVC 签入评论以包含关联的工作项 ID。您可以使用 similar script to this 遍历所有评论并使用
#1234
工作项 ID 更新它们。 - 然后使用“Import from TFVC”将过去 6 个月从 TFVC 导入到 Git。
- 保留旧的 TFVC 存储库并将其设为只读。
这样您就可以保留您的历史记录。完全保真迁移不是完全可能的(TFVC 不是 Git,有些东西不会转换过来)。如果您觉得这很重要,您也会在 Git 中获得相当数量的历史记录。您的工作项将保持与 TFVC 的链接,因为您已经将它们就地变形,它们的 ID 不会更改并且不需要重新链接。鉴于您已经更新了签入描述,提交也应该自动关联到您现有的工作项。
构建、测试结果、发布等其他内容也将以这种方式完全迁移,您最终非常接近目标解决方案的样子。
[杰西 - 谢谢你的美言]
是的,我做了很多与 TFS 相关的升级,其中许多是到 Azure DevOps 的高保真迁移。
正如 Jesse 所指出的,TFVC 不是 Git - 并且存在根本的概念差异。我坚信两者都有其优点(和局限性),而不是认为一个普遍优于另一个。
说到历史,准确地将其中一个捕获的内容表示为另一个是不切实际的。将历史保留在原始 VCS 中并设置一个干净的环境以便在新版中继续前进通常会更好。
欢迎直接联系我:david.corbin@dynconcepts.com