我当前的组织需要将源代码 + 历史链接从位于远程站点的供应商 TFS 2015 迁移到我们的 Azure Devops(Repos)。我面临的挑战是,由于源 TFS 在远程站点中并且没有通过我们的 AD 连接,因此无法找到链接它的方法。目前我们正在使用显式登录到他们的 tfs 并获取代码。有没有可能的方法来迁移相同的内容并每天进行同步,持续几个月并拔掉对远程的依赖。
任何帮助将非常感激..
我当前的组织需要将源代码 + 历史链接从位于远程站点的供应商 TFS 2015 迁移到我们的 Azure Devops(Repos)。我面临的挑战是,由于源 TFS 在远程站点中并且没有通过我们的 AD 连接,因此无法找到链接它的方法。目前我们正在使用显式登录到他们的 tfs 并获取代码。有没有可能的方法来迁移相同的内容并每天进行同步,持续几个月并拔掉对远程的依赖。
任何帮助将非常感激..
不确定您提到的 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 时,有很多方法可以做到这一点,这些方法在数据传输的保真度和流程的复杂性方面都各不相同。
只有选项 2 将包括迁移期间的源代码控制历史记录。但它也有一些限制,例如导入工具支持的版本。目前仅支持导入以下版本的 Azure DevOps Server:Azure DevOps Server 2019 和 Azure DevOps Server 2019.0.1
在您的方案中,您可以使用 TFS2015 中的 CI 构建来自动同步 Azure DevOps 存储库。这里最大的挑战是 TFS 和 Azure DevOps 服务的身份验证。正如您提到的那样,使用显式登录和 powershell 脚本应该可以完成工作。
供您参考的样本:
在托管 git repo 的 TFS 2015 项目中 -> 使用 TFS 2015 git repo 作为存储库创建构建定义 -> 启用包含所有分支的 CI。
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 将自动同步到相应的分支。