Установите разрешения для филиалов для группы через API Azure Repos - PullRequest
1 голос
/ 17 октября 2019

Мне нужно ограничить разрешения для определенных ветвей в 50 репо для определенных групп пользователей в репозиториях Azure. Это означает, что определенная группа пользователей не может принудительно нажать на основную ветвь, но может использовать другие ветви.

Это достаточно просто сделать в интерфейсе, но для этого нужно сделать более 50 репозиториев и выполнить эту задачу вручную. ,Я читал документацию по API репозитория Azure и пытаюсь понять, как мне это установить?

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Как объяснено в сообщении в блоге 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 для получения дополнительной информации о том, как указать личность члена.

0 голосов
/ 18 октября 2019

Вы можете использовать ниже rest api, чтобы установить форы разрешений ветвления для группы.

POST https://dev.azure.com/{orgname}/{projectid}/_api/_security/ManagePermissions?__v=5

Вот пример тела запроса.

{"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 isПолитики обхода при заполнении пул-запросов разрешением. \"PermissionBit\":128 - это политики обхода при отправке разрешения.

\"PermissionBit\":4 - это политика Contribute при отправке разрешения.

\"PermissionBit\":2048 - разрешение на изменение политик.

\"PermissionBit\":8 - это разрешение на отправку ресурса.

\"PermissionBit\":8192 - это разрешение на управление.

\"PermissionBit\":4096 - это разрешение на удаление другого.

Добавление

В теле запроса слишком много параметров, их можно получить с помощью официальной документации. Или я рекомендую вам получить эти параметры с помощью Network Tool, чтобы вручную отобрать их.

...