参考教程:https://gitlab.com/help/api/protected_branches.md
https://docs.gitlab.com/ee/api/protected_branches.html
branches支持gitlab 9.5及以上版本
#列出受保护的分支
curl --header "PRIVATE-TOKEN: " 'https://gitlab.example.com/api/v4/projects/5/protected_branches'
#保护单个分支(经测此项不可用,原因应该是没有添加push_access_level和merge_access_level,可使用下面的通配符批量保护分支,将通配符去掉即可保护单个分支)
curl --header "PRIVATE-TOKEN: " 'https://gitlab.example.com/api/v4/projects/5/protected_branches/master'
#解除分支保护
curl --request DELETE --header "PRIVATE-TOKEN: " 'https://gitlab.example.com/api/v4/projects/5/protected_branches/*-stable'
#通配符批量保护分支:
curl --request POST --header "PRIVATE-TOKEN: 2su34dxDI8ujs65SOOKj" 'http://192.168.1.201:8099/api/v4/projects/5/protected_branches?name=master*&push_access_level=30&merge_access_level=40&unprotect_access_level=40'
解释:
2su34dxDI8ujs65SOOKj:此处是我的token,需要换成你自己的
Token一般在gitlab中点击我的头像---setting---account
新版本一般在点击我的头像---setting---Access Tokens,输入Name 和Expires at生成Token
v4:指的是gitlab api的版本,不知道可以问管理员
5:指的是ProjectId,点击一个项目---setting---General project中可以看到
master*:指的是保护所有依master开头的分支名,例如:master1,master-or等
push_access_level=30: 允许推送级别
merge_access_level=40:允许合并级别
unprotect_access_level=40:允许取消保护分支级别
以下为具体数值:
0 => No access
30 => Developer access
40 => Maintainer access
60 => Admin access
tag支持GitLab 11.3版本
删除tag步骤同branches一样,只需把protected_branches修改为protected_tags即可!
坑:批量解除brnahcs或tags保护时,如果使用通配符,符合的branches或tags中有的已经被保护,有的没有被保护,这时如果执行命令会报错。
例如:tag version_v1.0已经被保护了,version_v2.0、version_v3.0没有被保护,如果用通配符执行保护version*是可以的,但是如果用通配符执行解除tag version*就会报错,version_v1.0必须单独解除!
200 - OK:这意味着GET,PUT或DELETE请求成功。当您请求资源时,它将以JSON格式返回。
201 - 已创建:这表示POST请求成功。仅当您尝试创建新资源时才会返回此状态代码。该资源也将退还给您。
400 - 错误请求:这表示您错过了此请求的必需属性。例如,未给出合并请求的标题。
401 - 未经授权:这意味着您未经过身份验证。如果您未随请求发送秘密令牌或发送无效令牌,则会返回此状态。
403 - 禁止访问:这意味着您已通过身份验证,但没有执行给定请求所需的权限。例如,如果您尝试删除项目但您不是项目的所有者,则可能会发生这种情况。
404 - 未找到:这意味着您尝试获取的资源不存在。例如,您尝试通过其ID请求问题,但无法找到该问题。
405 - 不允许的方法:这意味着GitLab不支持您尝试执行的请求。
409 - 冲突:这意味着存在冲突的资源; 例如,您尝试创建一个与已创建的项目同名的项目。
500 - 服务器错误:这表示您的请求出现了问题。这是服务器端问题,因此您无需更改邮件。您可能会在Gitlab中发现一个错误。
(如有其它观点,欢迎补充!)