如何使用Bitbucket API创建多个分支限制?

时间:2019-06-04 01:45:02

标签: bitbucket bitbucket-api

我正在尝试使用bitbucket api自动执行分支权限设置,但是当我尝试添加多个规则时,它不会覆盖旧规则(如果存在)。我正在为一个分支的存储库创建2条规则,但是如果我稍稍更改一下规则再次运行api,它将添加我添加的规则,而不是编辑当前规则。

我打了这个电话:

curl -X POST -v -u "username:secret" -H "Content-Type: application/vnd.atl.bitbucket.bulk+json" https://bitbucket.example.com/rest/branch-permissions/2.0/projects/myproj/repos/myrepo/restrictions -d '[{ "type": "read-only","matcher": {"id": "master","displayId": "master","type": {"id":"PATTERN","name": "Pattern"}},"users": ["my.user"],"groups": ["StashAdmins"]},{ "type": "no-deletes","matcher": {"id": "master","displayId": "master","type": { "id":"PATTERN","name": "Pattern"}},"users": ["user.my"],"groups": []}]'

然后,我想覆盖当前的分支权限,因此我将第一条规则从只读更改为仅请求请求,因此我运行:

curl -X POST -v -u "username:secret" -H "Content-Type: application/vnd.atl.bitbucket.bulk+json" https://bitbucket.example.com/rest/branch-permissions/2.0/projects/myproj/repos/myrepo/restrictions -d '[{ "type": "pull-request-only","matcher": {"id": "master","displayId": "master","type": {"id":"PATTERN","name": "Pattern"}},"users": ["my.user"],"groups": ["StashAdmins"]},{ "type": "no-deletes","matcher": {"id": "master","displayId": "master","type": { "id":"PATTERN","name": "Pattern"}},"users": ["user.my"],"groups": []}]'

但是它添加了新规则(仅请求拉动),而不是编辑整个规则。

有人知道如何强制覆盖分支限制规则吗?

1 个答案:

答案 0 :(得分:0)

使用Rest Api端点,您可以创建新的限制,因为每个存储库和/或项目可以有多个限制。

更多信息,请参见此处:https://docs.atlassian.com/bitbucket-server/rest/6.4.0/bitbucket-ref-restriction-rest.html#idp1

您首先需要删除之前创建的所有限制,然后发布新的限制。要获得每个存储库的所有限制,您将需要使用此端点:

GET /rest/branch-permissions/2.0/projects/{projectKey}/repos/{repositorySlug}/restrictions https://docs.atlassian.com/bitbucket-server/rest/6.4.0/bitbucket-ref-restriction-rest.html#idp3

然后您可以使用此选项将它们一一删除:

DELETE /rest/branch-permissions/2.0/projects/{projectKey}/repos/{repositorySlug}/restrictions/{id} https://docs.atlassian.com/bitbucket-server/rest/6.4.0/bitbucket-ref-restriction-rest.html#idp6