我目前的组织需要将源代码+历史链接从位于远程站点的供应商TFS 2015迁移到我们的Azure Devops(Repos)。我面临的挑战是,由于源TFS位于远程站点,并且没有通过我们的AD连接,所以无法找到链接它的方法。目前,我们正在使用对他们的tfs的明确登录并获取代码。是否有任何可能的方法来迁移相同的,并每天进行同步,持续几个月,并取消对远程的依赖。
任何帮助都将不胜感激..。
发布于 2019-08-27 08:09:33
不确定您提到的Azure DevOps(Repos)是Azure DevOps服务(优先DevOps服务)还是Azure DevOps server 2019(优先服务),似乎您只是想在TFS2015到Azure DevOps服务或Azure DevOps服务器之间执行源代码同步。
对于Azure DevOps服务:当您决定从Azure DevOps服务器迁移到Azure DevOps服务时,可以使用许多方法来完成这些操作,这在数据传输的保真度和流程的复杂性上都有所不同。
在迁移过程中,只有option2将包括源代码管理历史记录。但是它也有一些限制,比如导入工具支持的版本。目前只支持以下版本的Azure DevOps服务器进行导入: Azure DevOps Server 2019和Azure DevOps Server 2019.0.1
在您的场景中,您可以使用TFS2015中的CI构建来自动同步Azure DevOps回购。这里最大的挑战是TFS和Azure DevOps服务的身份验证。正如您所提到的,使用显式登录和powershell脚本应该可以完成这项工作。
供您参考的样品:
1.在2015年TFS中创建CI构建
在您的TFS 2015项目中,git托管了->,创建了一个构建定义,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注意:远程应该添加凭据。并且它使用PAT在Azure DevOps服务git中进行身份验证。您只需替换URL https://Personal%20Access%20Token:{PAT}@marinaliu.visualstudio.com/{project}/_git/{repo}中的真实PAT、帐户名称、项目名称和reponame即可。
保存构建定义,现在在TFS 2015 git repo中更新任何分支时,将自动同步相应分支的VSTS git。
https://stackoverflow.com/questions/57657952
复制相似问题