Azure DevOps分支策略API调用后,允许合并类型勾选未生效
Azure DevOps REST API设置合并策略未生效问题解决
问题描述
调用Azure DevOps REST API创建/更新「Require a merge strategy」分支策略时,请求返回200 OK,但查看策略发现仅「Limit merge types」被开启,「Allowed merge types」下无任何选项被选中,payload中设置的useSquashMerge: true未被系统识别。
请求地址:
POST https://dev.azure.com/{{Org}}/{{ProjectName}}/_apis/policy/configurations?api-version=7.0
原请求payload:
{ "isEnabled": true, "isBlocking": true, "type": { "id": "fa4e907d-c16b-4a4c-9dfa-4916e5d171ab" }, "settings": { "useSquashMerge": true, "scope": [ { "refName": "refs/heads/test_branch_for_policy", "matchKind": "exact", "repositoryId": "11223344-480x-4u1h-x16k-112233445566" } ] } }
问题原因
该分支策略(类型ID fa4e907d-c16b-4a4c-9dfa-4916e5d171ab)的settings参数结构不支持useSquashMerge字段,需通过以下两个参数控制合并类型限制:
isLimitMergeTypesEnabled: 控制是否启用合并类型限制(对应界面上的「Limit merge types」开关)allowedMergeTypes: 数组类型,指定允许的合并类型(对应界面上「Allowed merge types」的勾选框)
原payload使用了错误的参数名,导致系统无法识别要允许的合并类型。
解决方案
修改payload的settings部分,替换为正确的参数结构:
{ "isEnabled": true, "isBlocking": true, "type": { "id": "fa4e907d-c16b-4a4c-9dfa-4916e5d171ab" }, "settings": { "isLimitMergeTypesEnabled": true, "allowedMergeTypes": [ "Squash" ], "scope": [ { "refName": "refs/heads/test_branch_for_policy", "matchKind": "exact", "repositoryId": "11223344-480x-4u1h-x16k-112233445566" } ] } }
说明:
allowedMergeTypes支持的取值包括:"NoFastForward"、"Rebase"、"RebaseMerge"、"Squash",可根据需求添加多个类型- 必须将
isLimitMergeTypesEnabled设为true,否则allowedMergeTypes的设置不会生效
内容的提问来源于stack exchange,提问作者Avneet Singh
相关产品推荐
相关产品推荐

