使用git-tfs将GIT克隆到TFS(AzureDevOps)

时间:2019-10-29 14:56:30

标签: tfs azure-devops git-tfs

我们有一个包含旧项目的本地DevOps Server 2019,我能够使用git-tfs将此项目克隆到本地Git存储库中。一切都好。之后,我可以将此存储库推送到我们的AzureDevOps Git存储库。一切正常。

现在我们有一些项目和同事希望将TFVC用于这些特殊项目。因此,我的想法是将这些项目从本地TFS克隆到Git,然后使用git-tfs rcheckin将其推送到我们的AzureDevOps项目。

但是当我使用“ git-fts rcheckin --remote azuretfs”时,出现“错误:最新的TFS提交应该是正在检入的提交的父项”

当我使用“ git-tfs checin --remote azuretfs”时,所有文件都被上载到AzureDevOps项目,但是没有历史记录。

那么谁能形容我该做什么?

注意:我不想使用Microsoft提供的MigrationTool,因为在验证工作项模板等过程中有很多错误。(我们不使用它...)

2 个答案:

答案 0 :(得分:2)

对于那些寻找相同物品的人:

使用“旧” git tf工具(https://archive.codeplex.com/?p=gittf),可以将旧TFVC项目迁移到Azure DevOps(TVFC)。

如果要将旧的TFVC项目迁移到AzureDevOps(GIT),则应使用git tfs(http://git-tfs.com/

答案 1 :(得分:1)

不能保证成功的尝试...

注意:正如我所说,您将只能从一个分支迁移历史记录。

  1. 在TFVC中创建要在其中放置源代码的文件夹/项目。
  2. 使用git tfs clone迁移此文件夹(以使用rcheckin所需的git-tfs元数据进行git commit)
  3. 在此新存储库中(将其称为RepoWithHistory)将已迁移的历史存储库(称为NewRepo)添加为本地远程服务器。还有git fetch
  4. 仅清除来自RepoWithHistory的提交的元数据,其外观类似于:git filter-branch -f --msg-filter "sed 's/^git-tfs-id:.*$//g'" -- --all。但是要小心,保持来自NewRepo的提交中的元数据。
  5. 使用git replace --graft <sha1_of_first_commit_of_RepoWithHistory> <sha1_of_last_commit_of_NewRepo>嫁接2条历史记录(历史记录必须位于新历史记录的顶部)
  6. 使用git rcheckin --no-merge将历史记录迁移到TFVC(这将很长...)

我希望它会有所帮助。

PS:也许您应该尝试在一小部分提交中进行操作,以便能够在真正的TFVC项目中进行操作之前验证它是否可以工作。