如何通过GitLab API限制开发者从受保护的main分支创建新分支
解决方案
你需要的限制可以通过配置GitLab受保护分支的allowed_to_create(允许创建分支权限)实现,具体操作如下:
代码修改方案
你只需要在创建main受保护分支的配置中,新增allowed_to_create参数,仅开放给维护者权限即可,修改后代码如下:
p_branch = project.protectedbranches.create({ 'name': 'main', 'merge_access_level': gitlab.MAINTAINER_ACCESS, # 仅维护者可合并MR到main,符合原有配置 'push_access_level': gitlab.MAINTAINER_ACCESS, # 仅维护者可直接push到main,符合原有配置 'allowed_to_create': [{'access_level': gitlab.MAINTAINER_ACCESS}] # 仅维护者可从main创建新分支 }) # 批量创建子分支逻辑用维护者权限执行,完全不受影响 for branch_name in branch_names: branch = project.branches.create({'branch': branch_name, 'ref': 'main'})
效果说明
配置完成后会自动实现以下权限边界:
- 开发者无权限从main分支创建新分支,编辑main分支上的文件时,创建新分支的选项会被禁用,完全匹配你需要的界面效果
- 开发者仍可从非受保护的普通子分支创建新分支开展开发工作
- 开发者仍可提交从普通分支到main分支的合并请求,仅合并操作需要维护者权限执行
注意事项
- 该配置要求GitLab版本 >= 11.9,python-gitlab库版本 >= 2.0.0
- 如果你选择直接调用HTTP接口实现,请求地址为
POST /projects/:项目ID/protected_branches,请求参数和上述字典结构完全一致 - 自动化批量创建子分支的逻辑需要使用持有维护者及以上权限的Access Token执行,不会受到该配置的影响
内容的提问来源于stack exchange,提问作者Andrei Miculiță
相关产品推荐
相关产品推荐

