从内部网络TFS迁移到VSTS

时间:2018-02-06 17:01:27

标签: tfs migration azure-devops devops

我们在公司内部有一个TFS内部服务器,它包含在100多个项目中。我们走在边缘!因此,公司决定将所有项目转移到Visual Studio团队服务(VSTS)。不幸的是,如果我们要一个接一个地移动项目,那要花费很多时间。

我也尝试过Git-TF或Git-TFS,但它并不成功,令人沮丧。我每次都遇到一些错误,然后我放弃了。

有没有办法将所有项目一次性移动到VSTS或至少通过VSTS导入它们? (例如,我直接从VSTS导入Github项目。但现在我们有一台计算机作为公司内部的服务器而不是Github)

我感谢任何建议或帮助。

3 个答案:

答案 0 :(得分:1)

如果你想进行高保真数据库迁移,你应该查看@ DenverDev的回复,他在那里提供了正确的链接。

如果您只想将完整的Git存储库从TFS迁移到VSTS,您可以尝试this blog中的步骤:

  1. 使用其中的所有内容克隆Git回购:git clone [tfs git url] --mirror

  2. 添加新的遥控器:git remote add vsts [vsts git url]

  3. 推送所有更改:git push vsts --mirror

答案 1 :(得分:1)

这是一个综合脚本,用于使用powershell和TFS api将所有git仓库的克隆自动复制到Azure DevOps项目。我要从TFS 2018开始:

# get all repositories
$TfsUrl = "http://tfs-server:8080/tfs/DefaultCollection/myProject/_apis/git/repositories?api-version=4.1"
$repos = Invoke-RestMethod -Uri $TfsUrl -Method Get -ContentType "application/json" -UseDefaultCredentials

# set the auth header from a PAT
$myPAT = "aaaaaabbbbbbbbbbbbcccccccccccdddddddd111111123"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("aaduser@domain.com:$myPAT")))
$headers = @{Authorization=("Basic $base64AuthInfo")}

# get Azure DevOps project id
$adoPURL = "https://dev.azure.com/myOrganization/_apis/projects?api-version=4.1"
$adoProjectId = ((Invoke-RestMethod -Uri $adoPURL -Method Get -ContentType "application/json" -Headers $headers).value | where {$_.name -eq "myADOProject"}).id

# loop through each TFS repository, clone it, and push it to your Azure DevOps project
foreach ($repo in $repos.value) {
    Write-Host "cloning $($repo.name)"

    # set to the root folder, and mirror clone the repo
    Set-Location C:\clone_repo
    git clone --mirror http://tfs-server:8080/tfs/DefaultCollection/myProject/_git/$($repo.name)

    # create the new remote git repo in your Azure DevOps project
    $json = '{"name":"' + $($repo.name) + '","project":{"id":"' + $adoProjectId + '"}}'
    $vUrl = "https://dev.azure.com/myOrganization/_apis/git/repositories?api-version=4.1"
    Invoke-RestMethod -Uri "$vUrl" -Body $json -ContentType "application/json" -Method POST -Headers $headers

    # push the morrored repo to the remote
    Set-Location "$($repo.name).git"
    git remote set-url --push origin https://dev.azure.com/myOrganization/myADOProject/_git/$($repo.name)
    git push --mirror
}

答案 2 :(得分:0)

Microsoft提供了一个相当全面的从TFS迁移到VSTS的指南。

Migration Options

Migrate to Visual Studio Team Services

如果您已经尝试过并且遇到特定错误,请发布其他信息。