# 保护分支规则组

如果使用 project_full_path,确保 project_full_path 编码过,例子:/api/v3/projects/tencent/code--> /api/v3/projects/tencent%2Fcode (/ 编码 %2F)

保护分支规则组是工蜂新的用于管理保护分支的功能。 规则组中包含了原有保护分支的所有配置(包括成员)。每个保护分支都属于一个规则组,并且复用规则组中的配置。 通过设置自动保护分支规则组配置,您可以让分支在创建之后自动配置上对应的规则组。 通过规则组,您可以更加方便的管理保护分支。

如果 branch 包含特殊字符,确保 branch 进行过 encodeURIComponent 编码,例子:feature/function1 --> feature%2Ffunction1。

# 旧的保护分支接口兼容

保护分支和保护分成员相关的创建/删除/编辑接口已经废弃,目前您仍然可以使用这些接口,工蜂在内部会为保护分支匹配上对应的规则组 但在后续的版本中这些接口可能会移除,建议您尽快迁移至新的保护分支规则组接口。 您可以参考下表来进行迁移

旧的保护分支接口 新的规则组接口
将分支变为保护分支 将分支变为保护分支
修改保护分支基础设置 修改保护分支所在的规则组
删除保护分支 取消保护分支
为保护分支添加成员 为保护分支规则组添加成员
获取保护分支的成员 获取保护分支规则组的成员
编辑保护分支的成员 编辑保护分支规则组的成员
删除保护分支的指定用户 删除保护分支规则组的成员
分支设置 修改自动保护分支规则组配置

# 创建保护分支规则组

在项目里面创建保护分支规则组

POST /api/v3/projects/:id/protected_branch_rules

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
name string 规则组名称,在项目内必须唯一。不能包含以下字符串: ``(空格), ", REGEXP, `
description string(可选) 规则组的描述
push_access_level integer(可选) 推送权限级别,有效值:-1,0,30,40。(默认取 0)
-1:No one;
0:Only Branch Members(Except Reporters);
30:Above Developer + Branch Members(Except Reporters);
40:Above Master + Branch Members(Except Reporters)
merge_access_level integer(可选) 合并权限级别,有效值:0,3,30,40。 (默认取 40)
0 :Only Branch Members(Except Reporters);
3 :Only the Merge Manager;
30:Above Developer + Branch Members(Except Reporters);
40:Above Master + Branch Members(Except Reporters)
commit_force boolean(可选) 合并请求未被批准时,如果新提交涉及合并请求的更改,是否阻止推送代码。 (默认取项目配置)
commit_reset boolean(可选) 当源分支有新提交时,评审状态将有状态变更 (默认取项目配置)
commit_reset_rule integer(可选) 有效值:0,1, 2
0:当前评审状态为已通过时,重置所有评审人的批准
1:将重置所有评审人的批准
2:重置被修改文件的 owners 的批准
review_check boolean(可选) 合并请求必须经过代码评审才可合并 (默认取项目配置)
commit_check boolean(可选) 合并请求必须通过流水线检查才可合并 (默认取项目配置)
creator_can_approve boolean(可选) 创建者是否可以通过评审 (默认取项目配置)
push_create_review boolean(可选) Push 之后是否自动创建代码评审单 (默认取项目配置)
rule_modify boolean(可选) 是否禁止在创建评审时修改评审规则 (默认取项目配置)
note_label boolean(可选) 评审评论时是否需进行标签分类 (默认取项目配置)
resolved_check boolean(可选) 所有"未解决"评论都解决后才能通过代码评审 (默认取项目配置)
auto_create_review_pre_push boolean(可选) 推送启用 Pre-Push 模式 (默认 false)
approver_rule integer(可选) 审批人规则
-1:所有评审人通过,1:单评审通过,2+:多评审通过 (默认取项目配置)
necessary_approver_rule integer(可选) 必要审批人规则
-1:所有必要评审人通过,1:单必要评审通过,2+:多必要评审通过,0: 没有必要评审人 (默认取项目配置)
suggestion_reviewer string(可选) 评审人 id (只能是 id。多个评审人请用英文逗号分隔) (默认取项目配置)
necessary_reviewer string(可选) 必要评审人 id (只能是 id。多个评审人请用英文逗号分隔) (默认取项目配置)
path_reviewer string(可选) 路径评委规则 (默认取项目配置)
*.js review reviewer=username1,username2 necessary_reviewer=username3,username4
test.java review reviewer=git_user1,git_user2 necessary_reviewer=git_user1,git_user2
mr_template string(可选) 合并请求模板 (默认取项目配置)
merge_manager string(可选) 合并负责人,有效值:"0","-1","单个用户 id" (默认取 0)
"0": 不设置;
"-1": 仅允许合并请求的创建人合并;
"单个用户 id": 仅允许某个用户合并;
allow_merge_commits boolean(可选) 是否允许 merge_commits 合并代码 (默认取项目配置)
allow_squash_merging boolean(可选) 是否允许 squash_merging 合并代码 (默认取项目配置)
allow_rebase_merging boolean(可选) 是否允许 rebase_merging 合并代码 (默认取项目配置)
default_merge_method integer(可选) 默认的合并方式,可选值:0、1、2
0:允许合并提交
1:允许压缩合并
2:允许变基合并
owners_review_enabled boolean(可选) 是否对文件启用 OWNERS 评审 (默认 false)
initial_owners_min_count integer(可选) 每个文件的最小 OWNER 推荐数量 (0~5)
forbidden_add_necessary_reviewer boolean(可选) 禁止创建者手动添加必要评审人 (默认取项目配置)

返回值:

{
    "id": 1,
    "name": "branch_rule_name",
    "description": "description",
    "count": 0,
    "project_id": 29864,
    "default_rule": false,
    "created_by_id": 11266,
    "update_by_id": 11266,
    "created_at": "2021-09-26T07:33:29+0000",
    "updated_at": "2021-09-26T07:33:29+0000",
    "push_reset_enabled": false,
    "commit_reset": false,
    "commit_reset_rule": 0,
    "suggestion_reviewers": "",
    "necessary_reviewers": "",
    "path_reviewer_rules": "",
    "path_reviewer": "",
    "file_owner_path_rules": null,
    "can_approve_by_creator": true,
    "creator_can_approve": true,
    "auto_create_review_after_push": true,
    "push_create_review": true,
    "pre_push": false,
    "auto_create_review_pre_push": false,
    "forbidden_modify_rule": false,
    "rule_modify": false,
    "necessary_approver_rule": 0,
    "approver_rule": 1,
    "merge_request_template": "%commit_msg%",
    "commit_force": false,
    "review_check": false,
    "commit_check": false,
    "note_label": true,
    "resolved_check": false,
    "merge_manager": "123",
    "merge_request_must_link_tapd_tickets": false,
    "allow_merge_commits": true,
    "allow_squash_merging": true,
    "allow_rebase_merging": true,
    "default_merge_method": 1,
    "push_access_level": 40,
    "merge_access_level": 40,
    "mr_template": "%commit_msg%",
    "allow_certified_approver_enabled": false,
    "certified_approver_rule": 1,
    "certificate_level": "IREAD",
    "certified_language_rules": [
        {
            "extended_suffix": [
                ""
            ],
            "default_suffix": [
                "cpp",
                "cc",
                "cxx",
                "c++"
            ],
            "enable": true,
            "language": "C++"
        },
        {
            "extended_suffix": [
                ""
            ],
            "default_suffix": [
                "go"
            ],
            "enable": true,
            "language": "Go"
        },
        {
            "extended_suffix": [
                ""
            ],
            "default_suffix": [
                "java"
            ],
            "enable": true,
            "language": "Java"
        },
        {
            "extended_suffix": [
                ""
            ],
            "default_suffix": [
                "js",
                "jsx"
            ],
            "enable": true,
            "language": "JavaScript"
        },
        {
            "extended_suffix": [
                ""
            ],
            "default_suffix": [
                "ts",
                "tsx"
            ],
            "enable": true,
            "language": "TypeScript"
        },
        {
            "extended_suffix": [
                ""
            ],
            "default_suffix": [
                "m",
                "swift",
                "mm"
            ],
            "enable": true,
            "language": "Objective-C"
        },
        {
            "extended_suffix": [
                ""
            ],
            "default_suffix": [
                "py"
            ],
            "enable": true,
            "language": "Python"
        }
    ],
    "owners_review_enabled": false,
    "initial_owners_min_count": 1,
    "forbidden_add_necessary_reviewer": false
}

# 修改保护分支规则组

编辑项目下指定的保护分支规则组

注意:修改之后,规则组下所有保护分支的配置均会同步修改,请谨慎操作!

PUT /api/v3/projects/:id/protected_branch_rules/:rule_id

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
rule_id integer 规则组 ID
name string(可选) 规则组名称,在项目内必须唯一。不能包含以下字符串: ``(空格), ", REGEXP, `
description string(可选) 规则组的描述
push_access_level integer(可选) 推送权限级别,有效值:-1,0,30,40。
-1:No one;
0 :Only Branch Members(Except Reporters);
30:Above Developer + Branch Members(Except Reporters);
40:Above Master + Branch Members(Except Reporters)
merge_access_level integer(可选) 合并权限级别,有效值:0,3,30,40。 (默认取 40)
0 :Only Branch Members(Except Reporters);
3 :Only the Merge Manager;
30:Above Developer + Branch Members(Except Reporters);
40:Above Master + Branch Members(Except Reporters)
commit_force boolean(可选) 合并请求未被批准时,如果新提交涉及合并请求的更改,是否阻止推送代码。
commit_reset boolean(可选) 当源分支有新提交时,评审状态将有状态变更
commit_reset_rule integer(可选) 有效值:0,1, 2
0:当前评审状态为已通过时,重置所有评审人的批准
1:将重置所有评审人的批准
2:重置被修改文件的 owners 的批准
review_check boolean(可选) 合并请求必须经过代码评审才可合并
commit_check boolean(可选) 合并请求必须通过流水线检查才可合并
creator_can_approve boolean(可选) 创建者是否可以通过评审
push_create_review boolean(可选) Push 之后是否自动创建代码评审单
rule_modify boolean(可选) 是否禁止在创建评审时修改评审规则
note_label boolean(可选) 评审评论时是否需进行标签分类
resolved_check boolean(可选) 所有"未解决"评论都解决后才能通过代码评审
auto_create_review_pre_push boolean(可选) 推送启用 Pre-Push 模式 (默认 false)
approver_rule integer(可选) 审批人规则
-1:所有评审人通过,1:单评审通过,2+:多评审通过
necessary_approver_rule integer(可选) 必要审批人规则
-1:所有必要评审人通过,1:单必要评审通过,2+:多必要评审通过,0: 没有必要评审人
suggestion_reviewer string(可选) 评审人 id (只能是 id。多个评审人请用英文逗号分隔)
necessary_reviewer string(可选) 必要评审人 id (只能是 id。多个评审人请用英文逗号分隔)
path_reviewer string(可选) 路径评委规则
*.js review reviewer=username1,username2 necessary_reviewer=username3,username4\r\ntest.java review reviewer=git_user1,git_user2 necessary_reviewer=git_user1,git_user2
mr_template string(可选) 合并请求模板
allow_merge_commits boolean(可选) 是否允许 merge_commits 合并代码
allow_squash_merging boolean(可选) 是否允许 squash_merging 合并代码
allow_rebase_merging boolean(可选) 是否允许 rebase_merging 合并代码
default_merge_method integer(可选) 默认的合并方式,可选值:0、1、2
0:允许合并提交
1:允许压缩合并
2:允许变基合并
owners_review_enabled boolean(可选) 是否对文件启用 OWNERS 评审 (默认 false)
initial_owners_min_count integer(可选) 每个文件的最小 OWNER 推荐数量 (0~5)
forbidden_add_necessary_reviewer boolean(可选) 禁止创建者手动添加必要评审人

返回值:

{
    "id": 1,
    "name": "branch_rule_name",
    "description": "description",
    "count": 0,
    "project_id": 29864,
    "default_rule": false,
    "created_by_id": 11266,
    "update_by_id": 11266,
    "created_at": "2021-09-26T07:33:29+0000",
    "updated_at": "2021-09-26T07:33:29+0000",
    "push_reset_enabled": true,
    "commit_reset": true,
    "commit_reset_rule": 2,
    "suggestion_reviewers": null,
    "necessary_reviewers": null,
    "path_reviewer_rules": "",
    "path_reviewer": "",
    "file_owner_path_rules": null,
    "can_approve_by_creator": false,
    "creator_can_approve": false,
    "auto_create_review_after_push": false,
    "push_create_review": false,
    "pre_push": false,
    "auto_create_review_pre_push": false,
    "forbidden_modify_rule": false,
    "rule_modify": false,
    "necessary_approver_rule": 0,
    "approver_rule": 1,
    "merge_request_template": "%commit_msg%",
    "mr_template": "%commit_msg%",
    "commit_force": false,
    "review_check": false,
    "commit_check": false,
    "note_label": false,
    "resolved_check": false,
    "merge_manager": "0",
    "merge_request_must_link_tapd_tickets": false,
    "allow_merge_commits": true,
    "allow_squash_merging": true,
    "allow_rebase_merging": true,
    "default_merge_method": 0,
    "push_access_level": 0,
    "merge_access_level": 40,
    "allow_certified_approver_enabled": false,
    "certified_approver_rule": 1,
    "certificate_level": "IREAD",
    "certified_language_rules": [
        {
            "extended_suffix": [
                ""
            ],
            "default_suffix": [
                "cpp",
                "cc",
                "cxx",
                "c++"
            ],
            "enable": true,
            "language": "C++"
        },
        {
            "extended_suffix": [
                ""
            ],
            "default_suffix": [
                "go"
            ],
            "enable": true,
            "language": "Go"
        },
        {
            "extended_suffix": [
                ""
            ],
            "default_suffix": [
                "java"
            ],
            "enable": true,
            "language": "Java"
        },
        {
            "extended_suffix": [
                ""
            ],
            "default_suffix": [
                "js",
                "jsx"
            ],
            "enable": true,
            "language": "JavaScript"
        },
        {
            "extended_suffix": [
                ""
            ],
            "default_suffix": [
                "ts",
                "tsx"
            ],
            "enable": true,
            "language": "TypeScript"
        },
        {
            "extended_suffix": [
                ""
            ],
            "default_suffix": [
                "m",
                "swift",
                "mm"
            ],
            "enable": true,
            "language": "Objective-C"
        },
        {
            "extended_suffix": [
                ""
            ],
            "default_suffix": [
                "py"
            ],
            "enable": true,
            "language": "Python"
        }
    ],
    "owners_review_enabled": false,
    "initial_owners_min_count": 1,
    "forbidden_add_necessary_reviewer": false
}

# 删除保护分支规则组

删除项目下某个保护分支规则组。 只有满足以下条件,规则组才能被删除:

  1. 规则组下无保护分支。
  2. 规则组不是默认规则组。
  3. 规则组不在自动保护分支正则中。
DELETE /api/v3/projects/:id/protected_branch_rules/:rule_id

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
rule_id integer 规则组 ID

返回值:

200 或其他返回值

# 查看某个保护分支规则组

GET /api/v3/projects/:id/protected_branch_rules/:rule_id

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
rule_id integer 规则组 ID

返回值:

{
    "id": 1,
    "name": "branch_rule_name",
    "description": "description",
    "count": 0,
    "project_id": 29864,
    "default_rule": false,
    "created_by_id": 11266,
    "update_by_id": 11266,
    "created_at": "2021-09-26T07:33:29+0000",
    "updated_at": "2021-09-26T07:33:29+0000",
    "push_reset_enabled": true,
    "commit_reset": true,
    "suggestion_reviewers": null,
    "necessary_reviewers": null,
    "path_reviewer_rules": null,
    "file_owner_path_rules": null,
    "can_approve_by_creator": false,
    "creator_can_approve": false,
    "auto_create_review_after_push": false,
    "push_create_review": false,
    "pre_push": false,
    "auto_create_review_pre_push": false,
    "forbidden_modify_rule": false,
    "rule_modify": false,
    "necessary_approver_rule": 0,
    "approver_rule": 1,
    "merge_request_template": "%commit_msg%",
    "mr_template": "%commit_msg%",
    "commit_force": false,
    "review_check": false,
    "commit_check": false,
    "note_label": false,
    "resolved_check": false,
    "merge_manager": "0",
    "merge_request_must_link_tapd_tickets": false,
    "allow_merge_commits": true,
    "allow_squash_merging": true,
    "allow_rebase_merging": true,
    "default_merge_method": 0,
    "push_access_level": 40,
    "merge_access_level": 40,
    "allow_certified_approver_enabled": false,
    "certified_approver_rule": 1,
    "certificate_level": "IREAD",
    "certified_language_rules": [
        {
            "extended_suffix": [],
            "default_suffix": [
                "cpp",
                "cc",
                "cxx",
                "c++"
            ],
            "enable": true,
            "language": "C++"
        },
        {
            "extended_suffix": [],
            "default_suffix": [
                "go"
            ],
            "enable": true,
            "language": "Go"
        },
        {
            "extended_suffix": [],
            "default_suffix": [
                "java"
            ],
            "enable": true,
            "language": "Java"
        },
        {
            "extended_suffix": [],
            "default_suffix": [
                "js",
                "jsx"
            ],
            "enable": true,
            "language": "JavaScript"
        },
        {
            "extended_suffix": [],
            "default_suffix": [
                "ts",
                "tsx"
            ],
            "enable": true,
            "language": "TypeScript"
        },
        {
            "extended_suffix": [],
            "default_suffix": [
                "m",
                "swift",
                "mm"
            ],
            "enable": true,
            "language": "Objective-C"
        },
        {
            "extended_suffix": [],
            "default_suffix": [
                "py"
            ],
            "enable": true,
            "language": "Python"
        }
    ],
    "owners_review_enabled": false,
    "initial_owners_min_count": 1,
    "forbidden_add_necessary_reviewer": false
}

# 保护分支规则组列表

返回项目下的规则组列表,按规则组的更新时间倒序

GET /api/v3/projects/:id/protected_branch_rules

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
page integer(可选) 分页(默认值:1
per_page integer(可选) 默认页面大小(默认:20,最大:100
search string(可选) 搜索条件,模糊匹配规则组名

返回值:

[
    {
        "id": 1,
        "name": "branch_rule_name2",
        "description": "description",
        "count": 0,
        "project_id": 29864,
        "default_rule": false,
        "created_by_id": 11266,
        "update_by_id": 11266,
        "created_at": "2021-09-26T07:33:29+0000",
        "updated_at": "2021-09-26T07:33:29+0000",
        "push_reset_enabled": false,
        "suggestion_reviewers": "",
        "necessary_reviewers": "",
        "path_reviewer_rules": "",
        "file_owner_path_rules": null,
        "can_approve_by_creator": true,
        "auto_create_review_after_push": false,
        "pre_push": false,
        "forbidden_modify_rule": false,
        "necessary_approver_rule": 0,
        "approver_rule": 1,
        "merge_request_template": "%commit_msg%",
        "commit_force": false,
        "review_check": false,
        "note_label": true,
        "resolved_check": false,
        "merge_manager": "123",
        "merge_request_must_link_tapd_tickets": false,
        "allow_merge_commits": true,
        "allow_squash_merging": true,
        "allow_rebase_merging": true,
        "push_access_level": 40,
        "merge_access_level": 40,
        "commit_reset": false,
        "creator_can_approve": true,
        "rule_modify": false,
        "path_reviewer": "",
        "mr_template": "%commit_msg%"
        "allow_certified_approver_enabled": false,
        "certified_approver_rule": 1,
        "certificate_level": "IREAD",
                "certified_language_rules": [
            {
                "extended_suffix": [
                    ""
                ],
                "default_suffix": [
                    "cpp",
                    "cc",
                    "cxx",
                    "c++"
                ],
                "enable": true,
                "language": "C++"
            },
            {
                "extended_suffix": [
                    ""
                ],
                "default_suffix": [
                    "go"
                ],
                "enable": true,
                "language": "Go"
            },
            {
                "extended_suffix": [
                    ""
                ],
                "default_suffix": [
                    "java"
                ],
                "enable": true,
                "language": "Java"
            },
            {
                "extended_suffix": [
                    ""
                ],
                "default_suffix": [
                    "js",
                    "jsx"
                ],
                "enable": true,
                "language": "JavaScript"
            },
            {
                "extended_suffix": [
                    ""
                ],
                "default_suffix": [
                    "ts",
                    "tsx"
                ],
                "enable": true,
                "language": "TypeScript"
            },
            {
                "extended_suffix": [
                    ""
                ],
                "default_suffix": [
                    "m",
                    "swift",
                    "mm"
                ],
                "enable": true,
                "language": "Objective-C"
            },
            {
                "extended_suffix": [
                    ""
                ],
                "default_suffix": [
                    "py"
                ],
                "enable": true,
                "language": "Python"
            }
        ]
    }
]

# 将分支变为保护分支

在项目中将某个分支变为保护分支,必须指定所在的规则组

POST /api/v3/projects/:id/protected_branch_rules/:rule_id/branches

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
rule_id integer 规则组 ID
branch string 分支名

返回值:

{
    "id": 123,
    "projectId": 123,
    "name": "branch_name",
    "rule_id": 1,
    "created_at": "2021-09-26T08:40:37+0000",
    "updated_at": "2021-09-26T08:40:37+0000"
}

# 修改保护分支所在的规则组

修改保护分支所在的规则组,从而修改保护分支本身的配置。

PUT /api/v3/projects/:id/protected_branch_rules/:rule_id/branches/:branch

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
rule_id integer 规则组 ID
branch string 分支名
new_rule_id integer 新的规则组 id

返回值:

{
    "id": 123,
    "projectId": 123,
    "name": "branch_name",
    "rule_id": 1,
    "created_at": "2021-09-26T08:40:37+0000",
    "updated_at": "2021-09-26T08:40:37+0000"
}

# 取消保护分支

取消受保护分支

DELETE /api/v3/projects/:id/protected_branch_rules/:rule_id/branches/:branch

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
rule_id integer 规则组 ID
branch string 分支名

返回值:

# 获取保护分支规则组下的保护分支列表

返回项目下某个规则组的保护分支列表

GET /api/v3/projects/:id/protected_branch_rules/:rule_id/branches

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
rule_id integer 规则组 ID
search string(可选) 搜索条件,模糊匹配 分支名
page integer(可选) 页数(默认值:1
per_page integer(可选) 默认页面大小(默认值:20,最大值:100

返回值:

[
    {
        "id": 1,
        "projectId": 2,
        "name": "api_create",
        "rule_id": 1,
        "created_at": "2021-09-22T12:04:21+0000",
        "updated_at": "2021-09-23T12:04:55+0000"
    },
    {
        "id": 2,
        "projectId": 2,
        "name": "dev",
        "rule_id": 1,
        "created_at": "2021-09-26T07:59:48+0000",
        "updated_at": "2021-09-26T07:59:48+0000"
    }
]

# 保护分支规则组成员

保护分支规则组成员访问权限包括:

REPORTER = 20
DEVELOPER = 30
MASTER = 40

访问权限不能被设置为低于 REPORTER 或者 高于 MASTER

# 为保护分支规则组添加成员
POST /api/v3/projects/:id/protected_branch_rules/:rule_id/members

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
rule_id integer 规则组 ID
user_id integer 用户的 ID
access_level integer 要给用户设置的访问级别

返回值:

{
    "id": 1223,
    "avatar_url": "git.tencent.com/uploads/user/avatar/1223",
    "username": "user_git022",
    "web_url": "https://git.tencent.com/u/user_git022",
    "name": "user_git022",
    "state": "active",
    "access_level": 40
}
# 获取保护分支规则组的成员
GET /api/v3/projects/:id/protected_branch_rules/:rule_id/members

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
rule_id integer 规则组 ID
search string(可选) 搜索条件,模糊匹配 username
page integer(可选) 页数(默认值:1
per_page integer(可选) 默认页面大小(默认值:20,最大值:100

返回值:

 [{
    "id": 1223,
    "avatar_url": "git.tencent.com/uploads/user/avatar/1223",
    "username": "user_git022",
    "web_url": "https://git.tencent.com/u/user_git022",
    "name": "user_git022",
    "state": "active",
    "access_level": 40
}] 
# 编辑保护分支规则组的成员
PUT /api/v3/projects/:id/protected_branch_rules/:rule_id/members/:user_id

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
rule_id integer 规则组 ID
user_id integer 用户的 ID
access_level integer 要给用户设置的访问级别

返回值:

{
    "id": 1223,
    "avatar_url": "git.tencent.com/uploads/user/avatar/1223",
    "username": "user_git022",
    "web_url": "https://git.tencent.com/u/user_git022",
    "name": "user_git022",
    "state": "active",
    "access_level": 30
}
# 删除保护分支规则组的成员
DELETE /api/v3/projects/:id/protected_branch_rules/:rule_id/members/:user_id

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
rule_id integer 规则组 ID
user_id integer 用户的 ID

返回值:

200 或其他返回值

# 保护分支规则组项目相关设置

设置默认保护分支规则组、自动保护分支规则,需要具有项目 master 以上权限

# 修改保护分支默认规则组
PUT /api/v3/projects/:id/config/default_protected_branch_rule_id

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
rule_id integer 默认规则组 id

返回值:

{
    "limit_size": 512000,
    "limit_file_size": 512,
    "limit_lfs_size": 512000,
    "limit_lfs_file_size": 51200,
    "branch_name_regex": "",
    "auto_protect_branches": "dev.*",
    "tag_name_regex": null,
    "tag_create_push_level": 30,
    "default_protected_branch_rule_id": "`branch_rule_default` REGEXP \"feature.*\"\n`branch_rule_009` REGEXP \"00222229.*\"",
    "auto_protected_branch_rules": 58
}

# 自动保护规则

# 获取自动保护分支规则配置

获取项目的自动保护分支规则

GET /api/v3/projects/:id/config/auto_protected_branch_rules

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path

返回值:

"`branch_rule_1` REGEXP \"dev.*\""
# 修改自动保护分支规则组配置

修改项目的自动保护分支规则。可以通过正则表达式,让分支在创建之后自动匹配到对应的保护分支规则组

语法为 `规则组名` REGEXP "正则表达式" 。多个用换行符分隔。

e.g.

`branch_rule_1` REGEXP "branch_01.*"
`branch_rule_dev` REGEXP "dev.*"
PUT /api/v3/projects/:id/config/auto_protected_branch_rules

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
auto_protected_branch_rules string 自动保护分支规则。
should_update_existing_branches boolean(可选) 是否根据自动保护分支规则更新存量分支,不传递则默认以当前项目配置的值为准

返回值:

{
  "limit_size": 512000,
  "limit_file_size": 512,
  "limit_lfs_size": 512000,
  "limit_lfs_file_size": 51200,
  "branch_name_regex": "",
  "auto_protect_branches": "dev.*",
  "tag_name_regex": null,
  "tag_create_push_level": 30,
  "default_protected_branch_rule_id": "`branch_rule_default` REGEXP \"feature.*\"\n`branch_rule_009` REGEXP \"00222229.*\"",
  "auto_protected_branch_rules": 58,
  "should_update_existing_branches": true
}

# 保护分支规则组持证评审规则相关设置

# 修改保护分支规则组持证评审规则

注意:需要 master 及以上权限,请将参数以 json 的格式放置在 request 请求体中.

PUT /api/v3/projects/:id/protected_branch_rules/:rule_id/certified_reviewer_config

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
rule_id string 保护分支规则组 id
allow_certified_approver_enabled boolean 持证评审开关 true/false
certified_language_rules string[] 持证评审的证书语言配置,参考下面的 certified_language_rules

certified_language_rules 参数:

参数 类型 描述
enable Boolean 语言开关 true/false
language string 语言列表("C++"/"Go"/"Java"/"JavaScript/TypeScript"/"Objective-C"/"Python")
extended_suffix string[] 拓展文件后缀"txt","pdf"等

Body 举例:

{
    "allow_certified_approver_enabled":true,
    "certified_language_rules":[
            {
                "language": "c++",
                "extended_suffix": ["text"],
                "enable": true
            },
            {
                "language": "Go",
                "extended_suffix": [],
                "enable": false
            }
    
    ]
}

返回值:

{
    "id": 228508,
    "name": "master_rule_001",
    "description": "This is the protection branch rule group created from the protected branch page",
    "count": 1,
    "project_id": 10625560,
    "default_rule": true,
    "created_by_id": 385488,
    "update_by_id": 385488,
    "created_at": "2021-12-31T07:57:38+0000",
    "updated_at": "2022-02-22T02:00:30+0000",
    "push_reset_enabled": false,
    "suggestion_reviewers": "227375",
    "necessary_reviewers": "13233",
    "path_reviewer_rules": "*.js review reviewer=s-1\n\n",
    "file_owner_path_rules": null,
    "can_approve_by_creator": true,
    "auto_create_review_after_push": true,
    "push_create_review": true,
    "pre_push": false,
    "auto_create_review_pre_push": false,
    "forbidden_modify_rule": false,
    "necessary_approver_rule": 0,
    "approver_rule": 1,
    "merge_request_template": "%commit_msg%",
    "commit_force": false,
    "review_check": true,
    "note_label": false,
    "resolved_check": true,
    "merge_manager": "13233",
    "merge_request_must_link_tapd_tickets": false,
    "allow_merge_commits": true,
    "allow_squash_merging": true,
    "allow_rebase_merging": true,
    "push_access_level": 40,
    "merge_access_level": 40,
    "allow_certified_approver_enabled": true,
    "certified_approver_rule": 1,
    "certificate_level": "IREAD",
    "certified_language_rules": [
        {
            "extended_suffix": [
                "text"
            ],
            "default_suffix": [
                "cpp",
                "cc",
                "cxx",
                "c++"
            ],
            "enable": true,
            "language": "C++"
        },
        {
            "extended_suffix": [],
            "default_suffix": [
                "go"
            ],
            "enable": false,
            "language": "Go"
        },
        {
            "extended_suffix": [],
            "default_suffix": [
                "java"
            ],
            "enable": true,
            "language": "Java"
        },
        {
            "extended_suffix": [],
            "default_suffix": [
                "js",
                "jsx"
            ],
            "enable": true,
            "language": "JavaScript"
        },
        {
            "extended_suffix": [],
            "default_suffix": [
                "ts",
                "tsx"
            ],
            "enable": true,
            "language": "TypeScript"
        },
        {
            "extended_suffix": [],
            "default_suffix": [
                "m",
                "swift",
                "mm"
            ],
            "enable": true,
            "language": "Objective-C"
        },
        {
            "extended_suffix": [],
            "default_suffix": [
                "py"
            ],
            "enable": true,
            "language": "Python"
        }
    ]
  
}
lastUpdate: 3/2/2026, 3:36:43 PM