我正在尝试使用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": []}]'
但是它添加了新规则(仅请求拉动),而不是编辑整个规则。
有人知道如何强制覆盖分支限制规则吗?
答案 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