tfs - 远程 TFS 2015 到 Azure Devops(私有云)迁移
问题描述
我当前的组织需要将源代码 + 历史链接从位于远程站点的供应商 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 时,有很多方法可以做到这一点,这些方法在数据传输的保真度和流程的复杂性方面都各不相同。
- 选项 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 将自动同步到相应的分支。
推荐阅读
- arrays - Swift 5,自定义对象数组,最小值。不等于同一数组中的其他值
- android - 如何将 DatePickerDialog 默认日期更改为用户最近选择的日期?
- android - 在 SparkSL 着色器中获取片段的世界位置
- c# - 在一对分隔符(即字符串)之间解析字符串
- python - 在 Mlens Pipeline 中使用 StandardScaler 作为预处理器会生成分类警告
- mongodb - 允许使用新创建的用户对 mongodb 进行身份验证
- html - 如何编辑滚动文本使其始终可见?
- sql - 在两列中查找具有相同值的行
- lua - TIC-80 有问题
- flutter - 无法在@platform 上登录 at_chats 完整版