You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab自托管V14.3.0如何批量修改多仓库保护分支合并权限

GitLab批量修改保护分支合并权限解决方案

你配置的群组级保护分支规则未生效是GitLab的默认逻辑,该规则仅对规则创建后新生成的子仓库生效,存量已创建的仓库不会自动同步规则,可通过GitLab Open API批量修改存量仓库配置,操作方法如下:

前置准备

  • 登录GitLab进入「用户设置-访问令牌」页面,创建个人访问令牌(PAT),勾选api权限域,确保该令牌对所有需要修改的仓库拥有Maintainer及以上权限
  • 确认目标主群组ID(可在群组设置基础信息页查看)、需要修改的保护分支名称(如main、master,支持通配符格式如release/*)

批量执行脚本(Python示例)

首先安装GitLab官方Python SDK:
pip install python-gitlab

然后执行如下脚本:

import gitlab

# 自定义配置项,替换为你实际的参数
GITLAB_URL = "你的GitLab自托管实例访问地址"
PRIVATE_TOKEN = "你生成的个人访问令牌"
TARGET_GROUP_ID = "目标主群组的数字ID"
PROTECTED_BRANCH = "main"
# 权限等级说明:30=Developer,40=Maintainer,设置为30即允许Developer+Maintainer合并
MERGE_ACCESS_LEVEL = 30

# 初始化GitLab客户端
gl = gitlab.Gitlab(GITLAB_URL, private_token=PRIVATE_TOKEN)

# 拉取目标群组下所有仓库(包含子群组内的仓库)
group = gl.groups.get(TARGET_GROUP_ID)
projects = group.projects.list(all=True, include_subgroups=True)

for p in projects:
    project = gl.projects.get(p.id)
    try:
        # 获取对应保护分支的现有配置
        pb = project.protectedbranches.get(PROTECTED_BRANCH)
        # 更新合并权限
        pb.allowed_to_merge = [{"access_level": MERGE_ACCESS_LEVEL}]
        pb.save()
        print(f"仓库[{project.name}]权限更新成功")
    except Exception as e:
        print(f"仓库[{project.name}]更新失败:{str(e)}")

注意事项

  • 首次执行建议先在projects = group.projects.list(...)代码后添加[:1],仅测试修改第一个仓库,确认权限配置符合预期后再执行全量更新
  • 脚本执行完成后,后续新创建的子仓库会自动继承你已配置的群组级保护分支规则,无需再次手动调整

内容的提问来源于stack exchange,提问作者Rathore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:06:03