TFS 2017修改Git默认分支为main及新仓库默认配置方案咨询
TFS 2017 Update 3 Git默认分支批量修改方案
一、存量仓库默认分支批量修改
优先使用TFS官方REST API实现批量操作,不会破坏数据一致性,操作步骤如下:
- 先在TFS中创建权限范围包含
Git仓库读写的个人访问令牌(PAT) - 运行以下PowerShell脚本批量替换所有存量仓库的默认分支:
# 替换为实际的TFS实例地址、集合名称、PAT $tfsBaseUrl = "http://你的TFS服务地址:8080/tfs/集合名称" $pat = "你生成的PAT令牌" $authHeader = @{ Authorization = "Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat")) } # 拉取集合下所有未删除的Git仓库 $repoList = Invoke-RestMethod -Uri "$tfsBaseUrl/_apis/git/repositories?api-version=4.1" -Headers $authHeader -Method Get foreach ($repo in $repoList.value) { # 仅修改默认分支为master的仓库 if ($repo.defaultBranch -eq "refs/heads/master") { $updateParam = @{ defaultBranch = "refs/heads/main" } | ConvertTo-Json Invoke-RestMethod -Uri "$tfsBaseUrl/_apis/git/repositories/$($repo.id)?api-version=4.1" ` -Headers $authHeader -Method Patch -Body $updateParam -ContentType "application/json" Write-Host "已完成仓库【$($repo.name)】默认分支修改" } }
二、新建仓库默认分支自动设为main
无需额外开发,直接在TFS后台配置全局规则即可:
- 进入TFS集合管理页面,选择
版本控制设置分类 - 找到Git仓库默认分支配置项,将默认值从
master修改为main并保存 - 配置生效后所有新创建的Git仓库默认分支自动为main,无需手动调整
三、SQL查询默认分支不为main的仓库
注意:仅可对TFS数据库执行查询操作,禁止直接修改库表内容,否则会导致TFS服务异常、数据损坏,且不属于微软官方支持范围
查询对应集合库的SQL语句如下:
-- 替换语句中的[Tfs_你的集合名称]为实际的TFS集合数据库名 USE [Tfs_你的集合名称] GO SELECT p.ProjectName AS 所属项目, r.Name AS 仓库名称, r.DefaultBranch AS 默认分支路径 FROM tbl_GitRepository r INNER JOIN tbl_Project p ON r.ProjectId = p.ProjectId WHERE r.IsDeleted = 0 -- 排除已删除的仓库 AND r.DefaultBranch NOT LIKE '%/main' ORDER BY p.ProjectName, r.Name
内容的提问来源于stack exchange,提问作者Mikhail
相关产品推荐
相关产品推荐

