參考教程: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: <your_access_token>" 'https://gitlab.example.com/api/v4/projects/5/protected_branches'
#保護單個分支(經測此項不可用,原因應該是沒有添加push_access_level和merge_access_level,可使用下面的通配符批量保護分支,將通配符去掉即可保護單個分支)
curl --header "PRIVATE-TOKEN: <your_access_token>" 'https://gitlab.example.com/api/v4/projects/5/protected_branches/master'
#解除分支保護
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_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必須單獨解除!
GitLab API各狀態碼解釋
200 - OK:這意味着GET,PUT或DELETE請求成功。當您請求資源時,它將以JSON格式返回。
201 - 已創建:這表示POST請求成功。僅當您嘗試創建新資源時纔會返回此狀態代碼。該資源也將退還給您。
400 - 錯誤請求:這表示您錯過了此請求的必需屬性。例如,未給出合併請求的標題。
401 - 未經授權:這意味着您未經過身份驗證。如果您未隨請求發送祕密令牌或發送無效令牌,則會返回此狀態。
403 - 禁止訪問:這意味着您已通過身份驗證,但沒有執行給定請求所需的權限。例如,如果您嘗試刪除項目但您不是項目的所有者,則可能會發生這種情況。
404 - 未找到:這意味着您嘗試獲取的資源不存在。例如,您嘗試通過其ID請求問題,但無法找到該問題。
405 - 不允許的方法:這意味着GitLab不支持您嘗試執行的請求。
409 - 衝突:這意味着存在衝突的資源; 例如,您嘗試創建一個與已創建的項目同名的項目。
500 - 服務器錯誤:這表示您的請求出現了問題。這是服務器端問題,因此您無需更改郵件。您可能會在Gitlab中發現一個錯誤。
(如有其它觀點,歡迎補充!)