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

Clone GIT to TFS (AzureDevOps) with git-tfs

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

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

但是当我使用 "git-fts rcheckin --remote azuretfs" 我得到 "error: latest TFS commit should be parent of commits being checked in"

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

所以谁能描述一下我必须做什么?

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

你可以在没有成功保证的情况下尝试什么...

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

  1. 在要放置源代码的 TFVC 中创建 folder/project。
  2. 使用 git tfs clone 迁移此文件夹(以 git 提交 rcheckin 所需的 git-tfs 元数据)
  3. 将已迁移的历史存储库(我们称之为 RepoWithHistory)作为本地远程添加到这个新存储库(我们称之为 NewRepo)中。并且 git fetch
  4. 仅清除来自 RepoWithHistory 的提交的元数据,内容类似于:git filter-branch -f --msg-filter "sed 's/^git-tfs-id:.*$//g'" -- --all。但要小心保留来自 NewRepo.
  5. 的提交的元数据
  6. 使用git replace --graft <sha1_of_first_commit_of_RepoWithHistory> <sha1_of_last_commit_of_NewRepo>嫁接2个历史(历史必须在新历史之上)
  7. 使用git rcheckin --no-merge将历史迁移到TFVC(那会很长...)

希望对您有所帮助。

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

对于那些正在寻找相同的人:

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

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