远程 TFS 2015 到 Azure Devops(私有云)迁移

Remote TFS 2015 to Azure Devops (private cloud) Migration

我当前的组织需要将源代码 + 历史 linkages 从位于远程站点的供应商 TFS 2015 迁移到我们的 Azure Devops (Repos)。我面临的挑战是,由于源 TFS 位于远程站点并且未通过我们的 AD 连接,因此无法找到 link 它的方法。目前我们正在使用显式登录到他们的 tfs 并获取代码。有没有任何可能的方法来迁移相同的内容并每天进行同步,持续几个月并拔掉对远程的依赖。

任何帮助将不胜感激..

不确定您提到的 Azure DevOps(Repos) 是 Azure DevOps Service(之前的 VSTS)还是 Azure DevOps Server 2019(之前的 TFS) 在您的情况下,您似乎只想在 TFS2015 与 Azure 之间执行源代码同步DevOps 服务或 Azure DevOps 服务器。

对于 Azure DevOps 服务:当您决定从 Azure DevOps Server 迁移到 Azure DevOps Services 时,需要 many approaches 执行此操作,这在数据传输的保真度和复杂性方面各不相同过程。

  • 选项 1:手动复制最重要的资产
  • 选项 2:高保真数据库迁移
  • 选项 3:使用基于 public API 的工具进行更高保真度的迁移

只有选项 2 会在迁移过程中包含源代码管理历史记录。但它也有一些限制,比如导入工具支持的版本。目前仅支持导入以下版本的 Azure DevOps Server: Azure DevOps 服务器 2019 和 Azure DevOps 服务器 2019.0.1

在您的方案中,您可以使用 TFS2015 中的 CI 构建来自动同步 Azure DevOps 存储库。这里最大的挑战是 TFS 和 Azure DevOps 服务的身份验证。正如您提到的那样,使用显式登录和 powershell 脚本应该可以完成工作。

供您参考的示例:

1。在 TFS 2015

中创建 CI 构建

在托管 git 存储库的 TFS 2015 项目中 -> 使用 TFS 2015 git 存储库作为存储库创建构建定义 -> 启用包含所有分支的 CI。

2。添加 PowerShell 任务以将 TFS2015 git 存储库同步到 Azure DevOps 服务 使用以下脚本在构建定义中添加 PowerShell 任务:

if ( $(git remote) -contains 'vsts' )
{
    git remote rm vsts 2>&1|Write-Host
    echo 'VSTS Account removed'
}


git remote add vsts https://Personal%20Access%20Token:{PAT}@{account}.visualstudio.com/{project}/_git/{repo}

git checkout ${env:BUILD_SOURCEBRANCHNAME} 2>&1|Write-Host
git reset --hard origin/master 2>&1|Write-Host
echo 'update local branch with remote successfully'
git push  vsts ${env:BUILD_SOURCEBRANCHNAME} -f 2>&1|Write-Host

注意:应为 vsts 遥控器添加凭据。它在 Azure DevOps 服务 git 存储库 URL 中使用 PAT 进行身份验证。而你只需要在 URL https://Personal%20Access%20Token:{PAT}@marinaliu.visualstudio.com/{project}/_git/{repo}.

中替换真实的 PAT,accountname,projectname 和 reponame

保存构建定义,现在当 TFS 2015 git 存储库中的任何分支更新时,VSTS git 存储库将自动同步到相应的分支。