0

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

任何帮助将非常感激..

4

1 回答 1

1

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

对于 Azure DevOps 服务:当您决定从 Azure DevOps Server 迁移到 Azure DevOps Services 时,有很多方法可以做到这一点,这些方法在数据传输的保真度和流程的复杂性方面都各不相同。

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

只有选项 2 将包括迁移期间的源代码控制历史记录。但它也有一些限制,例如导入工具支持的版本。目前仅支持导入以下版本的 Azure DevOps Server:Azure DevOps Server 2019 和 Azure DevOps Server 2019.0.1

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

供您参考的样本:

1. 在 TFS 2015 中创建 CI 构建

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

在此处输入图像描述

2. 添加一个 PowerShell 任务以将 TFS2015 git repo 同步到 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 Service git repo URL 中使用 PAT 进行身份验证。而你只需要替换 URL 中真实的 PAT、accountname、projectname 和 reponame 即可https://Personal%20Access%20Token:{PAT}@marinaliu.visualstudio.com/{project}/_git/{repo}

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

于 2019-08-27T08:09:33.323 回答