Я пытаюсь обновить политику ветки в репозитории Azure DevOps. Я пытаюсь сделать это, используя вызовы Rest API, следуя документации из здесь.
Когда я запускаю это из Postman, запрос успешно завершается с кодом состояния «200 ОК». Проверив состояние политики ветвей в Azure DevOps, я вижу, что опция «Ограничить типы слияния» включена, однако в разделе «Разрешенные типы слияния:» флажок не установлен.
Вот полезная нагрузка json, которую я использовал.
POST https://dev.azure.com/{{Org}}/{{ProjectName}}/_apis/policy/configurations?api-version=7.0
{
"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"
}
]
}
}
Кажется "useSquashMerge": true
под settings
не рассматривается.
TL;DR используйте allowSquash
вместо useSquashMerge
.
Это работает при использовании служб Azure DevOps (облако), но не уверен насчет сервера Azure DevOps (размещенного).
Проведя небольшое исследование, мне удалось найти в разделе Автоматизация политик ветвей правильные настройки для настройки раздела Limit Merge Types
политики ветвей:
useSquashMerge
allowNoFastForward
allowSquash
allowRebase
allowRebaseMerge
В Azure DevOps Services работают все настройки, кроме useSquashMerge
. Мне не удалось найти много информации об этом, но, похоже, он используется в TFS/Azure DevOps Server — см. Несогласованность настроек политики стратегии слияния.
Выполнение следующего запроса кода на Postman:
https://dev.azure.com/my-organization/my-project/_apis/policy/configurations?api-version=7.0
Тело запроса:
{
"isEnabled": true,
"isBlocking": true,
"type": {
"id": "fa4e907d-c16b-4a4c-9dfa-4916e5d171ab"
},
"settings": {
"allowSquash": true,
"useSquashMerge": true,
"allowRebaseMerge": false,
"allowRebase": false,
"allowNoFastForward": false,
"scope": [
{
"repositoryId": "1xxxx516-aaaa-4ce4-xxxx-d56abbbbb6ec",
"refName": "refs/heads/main",
"matchKind": "exact"
}
]
}
}
Ответ:
{
"createdBy": {
"displayName": "Some user",
"url": "https://spsprodeus21.vssps.visualstudio.com/xxxx-xxxx-xxxx-xxxx-xxxx/_apis/Identities/xxxx-xxxx-xxxx-xxxx-xxxx",
"_links": {
"avatar": {
"href": "https://dev.azure.com/my-organization/_apis/GraphProfile/MemberAvatars/aad.xxxxxx"
}
},
"id": "7af0d439-aa9b-40cf-93a4-fb725b0694a7",
"uniqueName": "[email protected]",
"imageUrl": "https://dev.azure.com/my-organization/_api/_common/identityImage?id=xxxx-xxxx-xxxx-xxxx-xxxx",
"descriptor": "aad.xxxxxx"
},
"createdDate": "2024-07-13T13:18:59.5387814",
"isEnabled": true,
"isBlocking": true,
"isDeleted": false,
"settings": {
"useSquashMerge": true,
"allowNoFastForward": false,
"allowSquash": true,
"allowRebase": false,
"allowRebaseMerge": false,
"scope": [
{
"refName": "refs/heads/main",
"matchKind": "Exact",
"repositoryId": "1xxxx516-aaaa-4ce4-xxxx-d56abbbbb6ec"
}
]
},
"isEnterpriseManaged": false,
"_links": {
"self": {
"href": "https://dev.azure.com/my-organization/xxxx-xxxx-xxxx-xxxx-xxxx/_apis/policy/configurations/75"
},
"policyType": {
"href": "https://dev.azure.com/my-organization/xxxx-xxxx-xxxx-xxxx-xxxx/_apis/policy/types/xxxx-xxxx-xxxx-xxxx-xxxx"
}
},
"revision": 1,
"id": 75,
"url": "https://dev.azure.com/my-organization/xxxx-xxxx-xxxx-xxxx-xxxx/_apis/policy/configurations/75",
"type": {
"id": "xxxx-xxxx-xxxx-xxxx-xxxx",
"url": "https://dev.azure.com/my-organization/xxxx-xxxx-xxxx-xxxx-xxxx/_apis/policy/types/xxxx-xxxx-xxxx-xxxx-xxxx",
"displayName": "Require a merge strategy"
}
}
Примечание:
Документация, кажется, повреждена, я создал тикет с просьбой к MS исправить это.