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

远程TFS 2015到Azure Devops(私有云)迁移,tfs,azure-devops,migration,cloud,azure-repos,Tfs,Azure Devops,Migration,Cloud,Azure Repos,我目前的组织需要将源代码+历史链接从远程站点的供应商TFS 2015迁移到我们的Azure Devops(Repos)。我面临的挑战是,由于源TFS位于远程站点,并且没有通过我们的广告连接,因此无法找到链接它的方法。目前,我们正在使用explict登录到他们的tfs并获取代码。是否有任何可能的方法来迁移相同的内容,每天同步,持续几个月,并拔掉对remote的依赖 任何帮助都将不胜感激 不确定您提到的Azure DevOps(repo)是Azure DevOps服务(之前的VSTS)还是Azure

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

任何帮助都将不胜感激

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

对于Azure DevOps服务:当您决定从Azure DevOps服务器移动到Azure DevOps服务时,在数据传输的保真度和过程的复杂性方面都存在差异

  • 选项1:手动复制最重要的资产
  • 选项2:高保真数据库迁移
  • 选项3:使用基于公共API的工具进行高保真度迁移
迁移期间,只有选项2将包括源代码管理历史记录。但它也有一些局限性,如导入工具支持的版本。当前仅支持以下版本的Azure DevOps服务器进行导入: Azure DevOps服务器2019和Azure DevOps服务器2019.0.1

在您的场景中,您可以使用TFS2015中的CI构建自动同步Azure DevOps repo。这里最大的挑战是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任务: 注意:vsts遥控器应添加凭证。它在Azure DevOps服务git repo URL中使用PAT进行身份验证。您只需在URL
https://Personal%20Access%20Token:{PAT}@marinaliu.visualstudio.com/{project}/{u git/{repo}


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

感谢Patrick的输入。抱歉,这是Azure Devops服务,我们在私有云上。挑战在于,由于安全原因,我们无法建立相互信任的连接。所以现在我正在考虑使用显式登录到内部构建服务器从远程站点提取源代码,并将下载的代码推送到Azure repos,这两种方式都使用Azure管道。这有点间接,但效率不高,需要更多的powershell脚本。抱歉,误解了。我已经更新了我的回复。在您的情况下,可以使用TFS2015中的CI构建自动同步Azure DevOps repo。但此操作不会在TFS中保留任何历史记录。这里最大的挑战是TFS和Azure DevOps服务的身份验证。正如您提到的,使用显式登录和powershell脚本应该可以完成这项工作。谢谢Patrick。不幸的是,远程供应商tfs源位于TFVC而不是git中。有没有办法以相同的vc格式进行一对一映射。@Renji很遗憾,TFVC上没有此功能,但最新版本的TFS可以一次性快速将您的主分支及其历史导入Git。从那时起,进行技术转换(相对而言)不需要很多工作。一个技巧是在TFS端将主分支导入Git,然后使用镜像指导将repo克隆到VSTS,而无需将onprem服务器导入VSTS。看看这里类似的问题:@Renji For TFS 2015您可以使用一些第三方网桥,比如git TFS。如果您不想转换到GIT并在TFVC中继续工作。您可能已经使用客户端API创建工作空间并从TFS下载更改。复制并创建一个新的工作区,然后与远程VST建立映射。签入挂起的更改。这有点复杂,但也可以做到这一点,并通过谷歌在一些博客上有很好的记录。
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