通过Azure Repos API设置组的分支权限

时间:2019-10-17 10:44:44

标签: api azure-devops azure-devops-rest-api azure-repos

我需要限制Azure回购中特定用户组跨50个回购的某些分支的权限。也就是说,特定的用户组不能强制推送到主分支,而可以强制其他分支。

这很容易在界面中完成,但是需要进入50多个存储库并手动执行此任务。我一直在阅读Azure repos API文档,并且正在努力查看如何进行设置?

2 个答案:

答案 0 :(得分:1)

如博客文章https://jessehouwing.net/azure-devops-git-setting-default-repository-permissions/中所述:

tfssecurity /a+ "Git Repositories" repoV2/<Team Project GUID>/<repository guid>/refs^heads^<branch name>/ "ForcePush" <memberIdentity> DENY /collection:https://dev.azure.com/{organization}

可以通过REST API找到存储库指南,其中GitRepository.id包含该guid: https://docs.microsoft.com/en-us/rest/api/azure/devops/git/repositories/list?view=azure-devops-rest-5.1#examples

有关如何指定成员身份的更多信息,请参见https://docs.microsoft.com/en-us/azure/devops/server/command-line/tfssecurity-cmd?view=azure-devops

答案 1 :(得分:0)

您可以使用以下rest api来为组设置分支权限。

{"updatePackage":
"{\"IsRemovingIdentity\":false,
\"TeamFoundationId\":\"{teamfoundationId}}\",
\"DescriptorIdentityType\":\"Microsoft.TeamFoundation.Identity\",
\"DescriptorIdentifier\":\"{DescriptorIdentifier}}\",
\"PermissionSetId\":\"2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87\",
\"PermissionSetToken\":\"repoV2/{projectId}}/{repoId}}/refs^heads^{branchname}}/\",
\"RefreshIdentities\":false,
\"Updates\":
[{\"PermissionId\":1,\"PermissionBit\":32768,\"NamespaceId\":\"2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87\",
\"Token\":\"repoV2/{projectId}/{repoId}/refs/heads/{branchId}/\"}],
\"TokenDisplayName\":null}"}

这是请求正文的示例。

\"PermissionId\":1

注意

\"PermissionId\":2,表示将权限设置为“允许”, \"PermissionId\":1,表示将权限设置为“拒绝”, \"PermissionBit\":32768,表示将权限设置为“未设置”。

\"PermissionBit\":128是完成请求请求权限时的绕过策略。 \"PermissionBit\":4是推送许可时的绕过策略。

\"PermissionBit\":2048是推送许可时的贡献策略。

\"PermissionBit\":8是“编辑策略”权限。

\"PermissionBit\":8192是Fource推送权限。

\"PermissionBit\":4096是“管理”权限。

Restaurant是“删除其他人”的锁定权限。

添加

请求正文中的参数太多,您可以通过官方文档获取那里的参数。或者我建议您使用网络工具手动捕获这些参数。