# 分支

如果使用 project_full_path,确保 project_full_path 编码过,例子:/api/v3/projects/tencent/code--> /api/v3/projects/tencent%2Fcode (/ 编码 %2F) 分支已支持按照类别进行分类。

目前支持的类别有Mainline, Feature, Personal, Release, Hotfix, Develop, Bugfix, Collaboration, Pre-production, Production, Environment, ExperimentalOthers

# 创建项目分支

在项目里面创建分支

POST /api/v3/projects/:id/repository/branches

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
branch_name string 分支名
ref string ref可以是已存在的SHA, branch name, tag name
description string(可选) 分支描述
branch_type string(可选) 分支类别,默认为Others

返回值:

{
  "name": "123456",
  "protected": false,
  "developers_can_push": false,
  "developers_can_merge": false,
  "commit": {
    "id": "6269835cafdd2356d8b8d4a4e3738c79206c1d06",
    "message": "test",
    "parent_ids": [
      "12345fa022906668338166ce7f2e7bf35d502285"
    ],
    "authored_date": "2012-02-01T06:18:54+0000",
    "author_name": "git_user2",
    "author_email": "git_user2@tencent.com",
    "committed_date": "2012-02-01T06:18:54+0000",
    "committer_name": "git_user2",
    "committer_email": "git_user2@tencent.com",
    "title": "test",
    "created_at": "2012-02-01T06:18:54+0000",
    "short_id": "6269835c"
  },
  "description": "",
  "branch_type": {
        "name": "Others",
        "color": "#7F8C8D"
  }
}

# 修改分支

编辑给定项目的某个分支 注意:如果项目内已存在Mainline分支,则不允许将其他分支设置成Mainline类别

PUT /api/v3/projects/:id/repository/branches/:branch

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
branch string 分支名
description string(可选) 分支描述
branch_type string(可选) 分支类别,比如Mainline, Feature, Others等等

返回值:

{
  "name": "123456",
  "protected": false,
  "developers_can_push": false,
  "developers_can_merge": false,
  "commit": {
    "id": "6269835cafdd2356d8b8d4a4e3738c79206c1d06",
    "message": "test",
    "parent_ids": [
      "12345fa022906668338166ce7f2e7bf35d502285"
    ],
    "authored_date": "2012-02-01T06:18:54+0000",
    "author_name": "git_user2",
    "author_email": "git_user2@tencent.com",
    "committed_date": "2012-02-01T06:18:54+0000",
    "committer_name": "git_user2",
    "committer_email": "git_user2@tencent.com",
    "title": "test",
    "created_at": "2012-02-01T06:18:54+0000",
    "short_id": "6269835c"
  },
  "description": "",
  "branch_type": {
        "name": "Others",
        "color": "#7F8C8D"
  }
}

# 删除分支

删除项目版本库分支

DELETE /api/v3/projects/:id/repository/branches/:branch

参数:

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

返回值:

{
    "name": "删除分支",
    "commit": {
        "parent_ids": [
            "666962c91e3b03983a1fe310f9e16219ca616d11"
        ],
        "id": "3e3f3d2fb64102f997757aef19bd5413e9f523e1",
        "title": "更新文件",
        "author_name": "git_user1",
        "author_email": "git_user1@tencent.com",
        "created_at": "2024-08-29T08:24:02+0000",
        "message": "更新文件 ",
        "authored_date": "2024-08-29T08:24:02+0000",
        "committer_name": "git_user1",
        "committer_email": "git_user1@tencent.com",
        "committed_date": "2024-08-29T08:24:02+0000",
        "short_id": "3e3f3d2f"
    },
    "protected": false,
    "developers_can_push": false,
    "developers_can_merge": false,
    "description": "",
    "created_at": "2024-09-04T02:38:44+0000",
    "author": {
        "id": 1,
        "username": "git_user1",
        "web_url": "https://git.tencent.com/u/git_user1",
        "name": "test",
        "state": "active",
        "avatar_url": "https://assets.code.tencent.com/common/images/avatar/default_user_avatar.png"
    },
    "branch_type": {
        "name": "Others",
        "color": "#7F8C8D"
    }
}

# 批量删除分支

批量删除项目版本库分支

DELETE /api/v3/projects/:id/repository/branches

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
branch_names string 分支名 删除多个分支用&连接即可最大值为 100
例如:branch_names=test1&branch_names=test2

返回值:

{
    "branch_names": [
        "test1",
        "test2"
    ]
}

# 分支列表

返回项目版本库分支列表,按字母顺序排序

GET /api/v3/projects/:id/repository/branches

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
search string(可选) 搜索条件,模糊匹配分支名
page integer(可选) 分页(默认值:1
per_page integer(可选) 默认页面大小(默认:20,最大:100
order_by string(可选) 返回列表的排序字段,可选可选字段:name、updated_at(默认)
sort string(可选) order_by 的排序顺序 ,可选可选字段:asc、desc(默认)
branch_type string(可选) 分支类别:比如Mainline, Feature, Others等等
author_id integer(可选) 创建者 id

返回值:

[
  {
    "name": "fenzhi01",
    "protected": false,
    "developers_can_push": false,
    "developers_can_merge": false,
    "commit": {
      "id": "e99ab09234cfa855a129305e7960261cf145950a",
      "message": "提交测试",
      "parent_ids": [
        "e9c5aa72c9e22592ee2611d896b730c1a95cc339"
      ],
      "authored_date": "2011-03-03T00:01:05+0000",
      "author_name": "git_user1",
      "author_email": "git_user1@tencent.com",
      "committed_date": "2011-03-03T00:01:05+0000",
      "committer_name": "git_user1",
      "committer_email": "git_user1@tencent.com",
      "title": "nihaoshijie",
      "created_at": "2011-03-03T00:01:05+0000",
      "short_id": "e99ab092"
    },
    "description": "",
    "created_at": "2011-03-03T00:01:05+0000",
    "branch_type": {
        "name": "Others",
        "color": "#7F8C8D"
    },
    "author": {
        "id": 76291,
        "username": "git_user1",
        "web_url": "http://git.tencent.com/u/git_user1",
        "name": "git_user1",
        "state": "active",
        "avatar_url": "http://git.tencent.com/assets/images/avatar/no_user_avatar.png"
    }
  },
  {
    "name": "fenzhi02",
    "protected": false,
    "developers_can_push": false,
    "developers_can_merge": false,
    "commit": {
      "id": "9bd9d12cbab4260bdd9d38fe1140a6cdac7cd2ea",
      "message": "test",
      "parent_ids": [
        "1230a4610ca01dd10cb5bc30d8a1b1eab98c09a1"
      ],
      "authored_date": "2011-09-19T09:09:14+0000",
      "author_name": "git_user1",
      "author_email": "git_user1@tencent.com",
      "committed_date": "2011-09-19T09:09:14+0000",
      "committer_name": "git_user1",
      "committer_email": "git_user1@tencent.com",
      "title": "666",
      "created_at": "2011-09-19T09:09:14+0000",
      "short_id": "9bd9d12c"
    },
    "description": "",
    "created_at": "2011-09-19T09:09:14+0000",
    "branch_type": {
        "name": "Others",
        "color": "#7F8C8D"
    },
    "author": {
        "id": 76291,
        "username": "git_user1",
        "web_url": "http://git.tencent.com/u/git_user1",
        "name": "git_user1",
        "state": "active",
        "avatar_url": "http://git.tencent.com/assets/images/avatar/no_user_avatar.png"
    }
  }
]

# 获取分支详情

返回项目版本库某个分支详情

GET /api/v3/projects/:id/repository/branches/:branch

参数:

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

返回值:

{
  "name": "master",
  "protected": true,
  "developers_can_push": false,
  "developers_can_merge": false,
  "commit": {
    "id": "d21f748b73507a227a92c954bd3c89bf4e78e897",
    "message": "Merge branch 'fenzhi01' into 'master'\r\n\r\nxxx\r\n\r\nxxx\r\n\r\nSee merge request !7",
    "parent_ids": [
      "9bd9d12crgd4260bdd9d38fe1140a6cdac7cd2ea",
      "e99db05604cfa385a129305e7660261cf161950a"
    ],
    "authored_date": "2012-01-01T01:11:11+0000",
    "author_name": "git_user1",
    "author_email": "git_user1@tencent.com",
    "committed_date": "2012-01-01T01:11:11+0000",
    "committer_name": "git_user1",
    "committer_email": "git_user2",
    "title": "Merge branch 'fenzhi01' into 'master'",
    "created_at": "2012-01-01T01:11:11+0000",
    "short_id": "d21f748b"
  },
  "description": "",
  "created_at": "2012-01-01T01:11:11+0000",
  "branch_type": {
        "name": "Others",
        "color": "#7F8C8D"
    },
  "author": {
        "id": 76291,
        "username": "git_user1",
        "web_url": "http://git.tencent.com/u/git_user1",
        "name": "git_user1",
        "state": "active",
        "avatar_url": "http://git.tencent.com/assets/images/avatar/no_user_avatar.png"
        }
}

# 获取非保护分支评审规则

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

参数:

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

返回值:

{
    "merge_request_template": "1",
    "allow_merge_commits": false,
    "allow_squash_merging": true,
    "allow_rebase_merging": true,
    "default_merge_method": 1,
    "merge_request_must_link_tapd_tickets": true,
    "push_reset_enabled": false,
    "push_reset_rule": 0,
    "auto_create_review_after_push": true,
    "can_approve_by_creator": false,
    "forbidden_modify_rule": true,
    "approver_rule": 100,
    "necessary_approver_rule": 100,
    "path_reviewer_rules": "test",
    "free_path_rules": "add",
    "forbidden_add_necessary_reviewer": false,
    "force_add_labels_in_note": true,
    "review_check": true,
    "resolved_check": true,
    "only_merge_manager_merge": true,
    "merge_manager": "8875",
    "owners_review_enabled": true,
    "author_skip_owners_rule": false,
    "initial_owners_min_count": 1,
    "necessary_reviewers": [],
    "reviewers": [
        "8875"
    ]
}

# 修改非保护分支评审规则

PUT /api/v3/projects/:id/branch/config

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
only_merge_manager_merge boolean(可选) 仅允许合并负责人合并
merge_request_must_link_tapd_tickets boolean(可选) 合并请求是否必须绑定 TAPD 单
commit_mr_check boolean(可选) 合并请求未被批准时,如果新提交涉及合并请求的更改,则阻止推送代码
review_check boolean(可选) 合并请求必须经过代码评审才可合并
push_reset_enabled boolean(可选) 当源分支有新提交时,评审状态将有状态变更
push_reset_rule integer(可选) 可选值:
0:当前评审状态为已通过时,重置所有评审人的批准
1:将重置所有评审人的批准
2:重置被修改文件的 OWNERS 的批准
allow_merge_commits boolean(可选) 是否允许 merge_commits 合并代码
allow_squash_merging boolean(可选) 是否允许 squash_merging 合并代码
allow_rebase_merging boolean(可选) 是否允许 rebase_merging 合并代码
default_merge_method integer(可选) 默认合并方式
merge_request_template string(可选) 合并请求模板
merge_manager string(可选) 合并负责人,有效值:"0","-1","-2""单个用户 id"
"0": 不设置;
"-1": 仅允许合并请求的创建人合并;
"-2": 仅允许某个用户合并;
merge_manager_assignee string(可选) 当 merge_manager=-2,该参数输入"单个用户 id": 仅允许某个用户合并;
auto_create_review_after_push boolean(可选) 推送后自动创建代码评审单
can_approve_by_creator boolean(可选) 创建者是否可以自己通过评审
forbidden_modify_rule boolean(可选) 是否禁止在创建评审时修改评审规则
force_add_labels_in_note boolean(可选) 评审评论是否必须分类
resolved_check boolean(可选) 所有"未解决"评论都解决后才能通过代码评审
owners_review_enabled boolean(可选) 是否对文件启用 OWNERS 评审
initial_owners_min_count integer(可选) 每个文件的最小 OWNER 推荐数量
author_skip_owners_rule boolean(可选) 是否开启作者为 owner 的豁免
approver_rule integer(可选) 审批人规则
-1:所有评审人通过,
1:单评审通过,
2+:多评审通过
necessary_approver_rule integer(可选) 必要审批人规则
-1:所有必要评审人通过,
1:单必要评审通过,
2+:多必要评审通过,
0: 没有必要评审人
reviewers string(可选) 评审人 id
necessary_reviewers string(可选) 必要评审人 id
path_reviewer_rules string(可选) 路径评委规则
free_path_rules string(可选) 评审时无需关注的路径
forbidden_add_necessary_reviewer boolean(可选) 是否禁止创建者手动添加必要评审人

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

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

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

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
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": 10625560,
    "description": null,
    "public": false,
    "archived": false,
    "visibility_level": 10,
    "public_visibility": 100,
    "namespace": {
        "created_at": "2021-12-20T03:38:03+0000",
        "description": "利用 api 修改子项目组的描述信息",
        "id": 460907,
        "name": "test-panshisubgrou",
        "owner_id": null,
        "path": "panshi-api",
        "updated_at": "2021-12-20T03:38:03+0000"
    },
    "name": "web-panshi",
    "name_with_namespace": "GROUP-TEST1/test-panshi/test-panshisubgrou/web-panshi",
    "path": "web",
    "path_with_namespace": "GROUP-TEST1/panshi-api/panshi-api/web",
    "default_branch": "master",
    "ssh_url_to_repo": "git@git.tencent.com:GROUP-TEST1/panshi-api/panshi-api/web.git",
    "http_url_to_repo": "http://git.tencent.com/GROUP-TEST1/panshi-api/panshi-api/web.git",
    "https_url_to_repo": "https://git.tencent.com/GROUP-TEST1/panshi-api/panshi-api/web.git",
    "web_url": "https://git.tencent.com/GROUP-TEST1/panshi-api/panshi-api/web",
    "tag_list": [],
    "concatOwners": null,
    "issues_enabled": true,
    "merge_requests_enabled": true,
    "wiki_enabled": false,
    "snippets_enabled": true,
    "review_enabled": true,
    "fork_enabled": true,
    "tag_name_regex": null,
    "tag_create_push_level": 30,
    "branch_name_regex": null,
    "created_at": "2021-12-23T01:41:05+0000",
    "last_activity_at": "2022-04-08T06:45:55+0000",
    "creator_id": 75422,
    "avatar_url": "https://git.tencent.com/uploads/project/avatar/10625560",
    "watchs_count": 0,
    "stars_count": 0,
    "forks_count": 0,
    "config_storage": {
        "limit_lfs_file_size": 51200.0,
        "limit_size": 512000.0,
        "limit_file_size": 100.0,
        "limit_lfs_size": 512000.0
    },
   "config_confidential": {
        "level": -1, 
        "allow_ai_coding_tool": true
    },
    "forked_from_project": {
        "path": "web",
        "path_with_namespace": "GROUP-TEST1/panshi-api/web",
        "name": "web-panshi",
        "id": 10623255,
        "name_with_namespace": "GROUP-TEST1/test-panshi/web-panshi"
    },
    "statistics": {
        "commit_count": 17,
        "lfs_repository_size": 0.0,
        "repository_size": 0.01
    },
    "suggestion_reviewers": [
        {
            "id": 8875,
            "username": "git02",
            "web_url": "https://git.tencent.com/u/git02",
            "name": "git02",
            "state": "active",
            "avatar_url": "https://git.tencent.com/uploads/user/avatar/8875/f42534786c4f463b887d027425875f29.jpeg"
        },
        {
            "id": 385488,
            "username": "git01",
            "web_url": "https://git.tencent.com/u/git01",
            "name": "git01",
            "state": "active",
            "avatar_url": "https://git.tencent.com/assets/images/avatar/no_user_avatar.png"
        }
    ],
    "necessary_reviewers": [],
    "path_reviewer_rules": "",
    "approver_rule": 2,
    "necessary_approver_rule": 0,
    "commit_mr_check": false,
    "review_check": false,
    "can_approve_by_creator": true,
    "auto_create_review_after_push": true,
    "forbidden_modify_rule": false,
    "force_add_labels_in_note": true,
    "resolved_check": false,
    "push_reset_enabled": true,
    "merge_request_template": "%commit_msg%",
    "file_owner_path_rules": null,
    "created_from_id": null,
    "template_repository": false,
    "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"
        }
    ]
}

# 获取保护分支详情

返回项目版本库某个保护分支详情

GET /api/v3/projects/:id/repository/branches/:branch/protect

参数:

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

返回值:

{
  "protected": true,
  "developers_can_push": false,
  "developers_can_merge": false,
  "suggestion_reviewers": [],
  "necessary_reviewers": [],
  "name": "master",
  "commit": {
    "id": "d21f748b73507a227a92c954bd3c89bf4e78e897",
    "message": "Merge branch 'fenzhi01' into 'master'\r\n\r\nxxx\r\n\r\nxxx\r\n\r\nSee merge request !7",
    "parent_ids": [
      "9bd9d12crgd4260bdd9d38fe1140a6cdac7cd2ea",
      "e99db05604cfa385a129305e7660261cf161950a"
    ],
    "authored_date": "2012-01-01T01:11:11+0000",
    "author_name": "git_user1",
    "author_email": "git_user1@tencent.com",
    "committed_date": "2012-01-01T01:11:11+0000",
    "committer_name": "git_user1",
    "committer_email": "git_user2",
    "title": "Merge branch 'fenzhi01' into 'master'",
    "created_at": "2012-01-01T01:11:11+0000",
    "short_id": "d21f748b"
  },
    "commit_force": false,
    "push_reset_enabled": true,
    "can_approve_by_creator": true,
    "push_create_review": false,
    "forbidden_modify_rule": false,
    "note_label": false,
    "approver_rule": 1,
    "necessary_approver_rule": 0,
    "merge_request_template": null,
    "path_reviewer_rules": "",
    "push_access_level": 0,
    "merge_access_level": 40,
    "file_owner_path_rules": "*.md review owner=username1",
    "merge_request_must_link_tapd_tickets": true,
    "allow_merge_commits": true,
    "allow_squash_merging": true,
    "allow_rebase_merging": false,
    "rule_id": 36152,
    "review_check": false,
    "merge_manager": "0",
    "commit_reset": false,
    "creator_can_approve": true,
    "rule_modify": false,
    "path_reviewer": "",
    "mr_template": "%commit_msg%",
    "commit_reset": false,
    "creator_can_approve": true,
    "rule_modify": false,
    "path_reviewer": "",
    "mr_template": "%commit_msg%"
}

# 将分支变为保护分支

项目版本库某个分支变为受保护的分支

注意: 保护分支功能已迁移至规则组,本接口在后续版本中可能会删除,建议尽快迁移,可参考旧的保护分支接口兼容

注意:当 push_access_level 有传入值时,会覆盖 developers_can_push 值。当没有传入值时,会使用 developers_can_push 值;
当项目的"代码评审"设置 (工蜂页面:设置 -> 基础设置 -> 特性设置 -> 代码评审) 未开启时,对以下字段的设置将不会生效: commit_reset、commit_force、review_check、approver_rule、necessary_approver_rule、suggestion_reviewer、necessary_reviewer、 path_reviewer、creator_can_approve、push_create_review、rule_modify、note_label

当 merge_access_level 有值传入时,会覆盖 developers_can_merge 值。当没有传入值时,会使用 developers_can_merge 值

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

PUT /api/v3/projects/:id/repository/branches/:branch/protect

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
branch string 分支 名
developers_can_push boolean(可选) developer角色是否能够 推送 (默认:false) (即将废弃,请使用 push_access_level)
developers_can_merge boolean(可选) developer角色是否能够 合并 (默认:false) (即将废弃,请使用 merge_access_level)
push_access_level integer(可选) 推送权限级别,有效值:0,30,40。(默认取 0)
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(可选) 合并请求必须经过代码评审才可合并 (默认 false)
creator_can_approve boolean(可选) 创建者是否可以通过评审 (默认取项目配置)
push_create_review boolean(可选) Push 之后是否自动创建代码评审单 (默认取项目配置)
rule_modify boolean(可选) 是否禁止在创建评审时修改评审规则 (默认取项目配置)
note_label boolean(可选) 评审评论时是否需进行标签分类 (默认取项目配置)
resolved_check boolean(可选) 所有"未解决"评论都解决后才能通过代码评审 (默认 false)
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(可选) 合并请求模板 (默认取项目配置)
allow_merge_commits boolean(可选) 是否允许 merge_commits 合并代码 (默认取项目配置)
allow_squash_merging boolean(可选) 是否允许 squash_merging 合并代码 (默认取项目配置)
allow_rebase_merging boolean(可选) 是否允许 rebase_merging 合并代码 (默认取项目配置)
merge_manager string(可选) 合并负责人,有效值:"0","-1","单个用户 id" (默认取项目配置)
"0": 不设置;
"-1": 仅允许合并请求的创建人合并;
"单个用户 id": 仅允许某个用户合并;

返回值:

{
    "protected": true,
    "developers_can_push": false,
    "developers_can_merge": false,
    "suggestion_reviewers": [],
    "necessary_reviewers": [],
    "name": "master",
    "commit": {
        "id": "e9fb4410a293dfb84435278ed6e7ad22a569ddc7",
        "message": "df",
        "parent_ids": [],
        "authored_date": "2019-07-15T07:47:55+0000",
        "author_name": "git_user1",
        "author_email": "git_user1g@tencent.com",
        "committed_date": "2019-07-15T07:47:55+0000",
        "committer_name": "git_user1",
        "committer_email": "git_user1@tencent.com",
        "title": "dff",
        "created_at": "2019-07-15T07:47:55+0000",
        "short_id": "e9fb4410"
    },
    "commit_force": false,
    "push_reset_enabled": true,
    "commit_reset": true,
    "commit_reset_rule": 0,
    "can_approve_by_creator": false,
    "creator_can_approve": false,
    "auto_create_review_after_push": false,
    "push_create_review": false,
    "forbidden_modify_rule": false,
    "rule_modify": false,
    "note_label": false,
    "approver_rule": 1,
    "necessary_approver_rule": 0,
    "merge_request_template": "%commit_msg%",
    "mr_template": "%commit_msg%",
    "path_reviewer_rules": "",
    "path_reviewer": "",
    "file_owner_path_rules": null,
    "push_access_level": 0,
    "auto_create_review_pre_push": false,
    "review_check": 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,
    "rule_id": 678956,
    "merge_access_level": 40
}

# 修改保护分支基础设置

修改已经存在的保护分支的基础设置

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

注意: 保护分支功能已迁移至规则组,本接口在后续版本中可能会删除,建议尽快迁移,可参考旧的保护分支接口兼容

注意:当 push_access_level 有传入值时,会覆盖 developers_can_push 值。当没有传入值时,会使用 developers_can_push 值;
当项目的"代码评审"设置 (工蜂页面:设置 -> 基础设置 -> 特性设置 -> 代码评审) 未开启时,对以下字段的设置将不会生效: commit_reset、commit_force、review_check、approver_rule、necessary_approver_rule、suggestion_reviewer、necessary_reviewer、 path_reviewer、creator_can_approve、push_create_review、rule_modify、note_label、resolved_check、auto_create_review_pre_push

当 merge_access_level 有值传入时,会覆盖 developers_can_merge 值。当没有传入值时,会使用 developers_can_merge 值

PUT /api/v3/projects/:id/repository/branches/:branch/config

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
branch string 分支 名
developers_can_push boolean(可选) developer角色是否能够 推送
developers_can_merge boolean(可选) developer角色是否能够 合并
push_access_level integer(可选) 推送权限级别,有效值:0,30,40。
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。
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(可选) 合并请求必须经过代码评审才可合并
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 模式
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 合并代码 (默认取项目配置)
merge_manager string(可选) 合并负责人,有效值:"0","-1","单个用户 id"
"0": 不设置;
"-1": 仅允许合并请求的创建人合并;
"单个用户 id": 仅允许某个用户合并;

返回值:

{
    "protected": true,
    "developers_can_push": false,
    "developers_can_merge": false,
    "suggestion_reviewers": [
    {
        "id": 80041,
        "username": "git_user2",
        "web_url": "https://git.tencent.com/u/yinbohe",
        "name": "yinbohe",
        "state": "active",
        "avatar_url": "https://git.tencent.com/assets/images/avatar/no_user_avatar.png"
    }
    ],
    "necessary_reviewers": [],
    "name": "master",
    "commit": {
        "id": "e9fb4410a293dfb84435278ed6e7ad22a569ddc7",
        "message": "df",
        "parent_ids": [],
        "authored_date": "2019-07-15T07:47:55+0000",
        "author_name": "git_user1",
        "author_email": "git_user1g@tencent.com",
        "committed_date": "2019-07-15T07:47:55+0000",
        "committer_name": "git_user1",
        "committer_email": "git_user1@tencent.com",
        "title": "dff",
        "created_at": "2019-07-15T07:47:55+0000",
        "short_id": "e9fb4410"
    },
  "commit_force": false,
  "push_reset_enabled": true,
  "commit_reset": true,
  "commit_reset_rule": 1,
  "can_approve_by_creator": false,
  "creator_can_approve": false,
  "auto_create_review_after_push": false,
  "push_create_review": false,
  "forbidden_modify_rule": false,
  "rule_modify": false,
  "note_label": false,
  "approver_rule": 1,
  "necessary_approver_rule": 0,
  "merge_request_template": "%commit_msg%",
  "mr_template": "%commit_msg%",
  "path_reviewer_rules": "*.js review reviewer=username1,username2 necessary_reviewer=username3,username4\r\n*.java review reviewer=git_user1,git_user2 necessary_reviewer=git_user1,git_user2",
  "path_reviewer": "",
  "file_owner_path_rules": null,
  "push_access_level": 0,
  "auto_create_review_pre_push": false,
  "review_check": 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,
  "rule_id": 679237,
  "merge_access_level": 40
}

# 取消保护分支

取消受保护分支

注意: 保护分支功能已迁移至规则组,本接口在后续版本中可能会删除,建议尽快迁移,可参考旧的保护分支接口兼容

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

PUT /api/v3/projects/:id/repository/branches/:branch/unprotect

参数:

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

返回值:

{
  "name": "fenzhi1",
  "protected": false,
  "developers_can_push": false,
  "developers_can_merge": false,
  "commit": {
    "id": "37c36524713aa8083f787066a9ed0c0d2f82bbb4",
    "message": "dass",
    "parent_ids": [
      "b5e3f65af2fd6d2895414a679290cad7664217b3"
    ],
    "authored_date": "2012-01-08T17:30:32+0000",
    "author_name": "git_user2",
    "author_email": "git_user2@tencent.com",
    "committed_date": "2012-01-08T17:30:32+0000",
    "committer_name": "git_user2",
    "committer_email": "git_user2@tencent.com",
    "title": "666",
    "created_at": "2012-01-08T17:30:32+0000",
    "short_id": "37c36524"
  }
}

# 保护分支成员

分支成员访问权限包括:

REPORTER = 20
DEVELOPER = 30
MASTER = 40

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

# 为保护分支添加成员

注意: 保护分支功能已迁移至规则组,本接口在后续版本中可能会删除,建议尽快迁移,可参考旧的保护分支接口兼容

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

POST /api/v3/projects/:id/branches/protected/:protected_branch_name/members

参数:

参数 类型 描述
id integer 项目 ID 或 项目全路径 project_full_path
protected_branch_name integer 保护分支的 分支名
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/branches/protected/:protected_branch_name/members

参数:

参数 类型 描述
id integer 项目 ID 或 项目全路径 project_full_path
protected_branch_name 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
}] 
# 编辑保护分支的成员

注意: 保护分支功能已迁移至规则组,本接口在后续版本中可能会删除,建议尽快迁移,可参考旧的保护分支接口兼容

PUT /api/v3/projects/:id/branches/protected/:protected_branch_name/members/:user_id

参数:

参数 类型 描述
id integer 项目 ID 或 项目全路径 project_full_path
protected_branch_name integer 保护分支的 分支名
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/branches/protected/:protected_branch_name/members/:user_id

参数:

参数 类型 描述
id integer 项目 ID 或 项目全路径 project_full_path
protected_branch_name integer 保护分支的 分支名
user_id integer 用户的 ID

返回值:

200 或其他返回值

# 设置分支命名和模型规则

有项目 master 以上权限的用户可设置分支模型类型,自动分类规则。 请将参数以 json 的格式放置在 request 请求体中

PUT /api/v3/projects/:id/repository/branch_settings

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
branch_name_regex string(可选) 允许的分支名称 regex 表达式
branch_name_regex_type integer(可选) 允许的分支名称 regex 表达式适用的场景,默认值是 1,针对所有分支行为;可选值 2,针对创建新分支行为
branch_types array of hash(可选) 分支模型目前支持的类别

branch_types 参数:

参数 类型 描述
name string 分支模型的类别
regex string(可选) 允许的分支名称 regex 表达式
enabled Boolean 选项开关 true/false

Body 举例:

{
    "branch_name_regex":"branch_name",
    "branch_name_regex_type": 1,
    "branch_types":[
            {
                "name":"Personal",
                "enabled":true,
                "regex":"test.*"
            }

        ]
}

返回值:

{
    "branch_name_regex": "branch_name",
    "branch_name_regex_type": 1,
    "branch_types": [
        {
            "description": "Others",
            "name": "Others",
            "color": "#7F8C8D",
            "enabled": true,
            "regex": null
        },
        {
            "description": "The main branch",
            "name": "Mainline",
            "color": "#0033CC",
            "enabled": true,
            "regex": null
        },
        {
            "description": "A branch for new feature development",
            "name": "Feature",
            "color": "#44AD8E",
            "enabled": false,
            "regex": "111"
        },
        {
            "description": "A branch for personal development",
            "name": "Personal",
            "color": "#5CB85C",
            "enabled": true,
            "regex": "test.*"
        },
        {
            "description": "A branch with stable version and ready for release",
            "name": "Release",
            "color": "#6B7FAB",
            "enabled": false,
            "regex": ""
        },
        {
            "description": "A branch to capture work to fix an urgent production defect",
            "name": "Hotfix",
            "color": "#CC0033",
            "enabled": false,
            "regex": ""
        },
        {
            "description": "The main development branch for the next release",
            "name": "Develop",
            "color": "#428BCA",
            "enabled": true,
            "regex": ""
        },
        {
            "description": "A branch for product bugs fix",
            "name": "Bugfix",
            "color": "#A8D695",
            "enabled": false,
            "regex": ""
        },
        {
            "description": "A branch for co-development in sub-team",
            "name": "Collaboration",
            "color": "#A295D6",
            "enabled": false,
            "regex": ""
        },
        {
            "description": "A branch of pre-production environment",
            "name": "Pre-production",
            "color": "#664EC7",
            "enabled": false,
            "regex": ""
        },
        {
            "description": "A branch of production environment",
            "name": "Production",
            "color": "#8E44AD",
            "enabled": false,
            "regex": ""
        },
        {
            "description": "A branch of the specific environment where the product is deployed",
            "name": "Environment",
            "color": "#D9534E",
            "enabled": false,
            "regex": ""
        },
        {
            "description": "A branch collects experimental work, and not expected to be merged into mainline",
            "name": "Experimental",
            "color": "#D1D100",
            "enabled": false,
            "regex": ""
        }
    ]
}

# 获取分支设置详情

GET /api/v3/projects/:id/repository/branch_settings

参数:

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

返回值:

{
    "branch_name_regex": "branch_name",
    "branch_name_regex_type": 1,
    "branch_types": [
        {
            "description": "Others",
            "name": "Others",
            "color": "#7F8C8D",
            "enabled": true,
            "regex": null
        },
        {
            "description": "The main branch",
            "name": "Mainline",
            "color": "#0033CC",
            "enabled": true,
            "regex": null
        },
        {
            "description": "A branch for new feature development",
            "name": "Feature",
            "color": "#44AD8E",
            "enabled": true,
            "regex": "feature.*"
        },
        {
            "description": "A branch for personal development",
            "name": "Personal",
            "color": "#5CB85C",
            "enabled": true,
            "regex": ""
        },
        {
            "description": "A branch with stable version and ready for release",
            "name": "Release",
            "color": "#6B7FAB",
            "enabled": false,
            "regex": ""
        },
        {
            "description": "A branch to capture work to fix an urgent production defect",
            "name": "Hotfix",
            "color": "#CC0033",
            "enabled": false,
            "regex": ""
        },
        {
            "description": "The main development branch for the next release",
            "name": "Develop",
            "color": "#428BCA",
            "enabled": false,
            "regex": ""
        },
        {
            "description": "A branch for product bugs fix",
            "name": "Bugfix",
            "color": "#A8D695",
            "enabled": false,
            "regex": ""
        },
        {
            "description": "A branch for co-development in sub-team",
            "name": "Collaboration",
            "color": "#A295D6",
            "enabled": false,
            "regex": ""
        },
        {
            "description": "A branch of pre-production environment",
            "name": "Pre-production",
            "color": "#664EC7",
            "enabled": false,
            "regex": ""
        },
        {
            "description": "A branch of production environment",
            "name": "Production",
            "color": "#8E44AD",
            "enabled": false,
            "regex": ""
        },
        {
            "description": "A branch of the specific environment where the product is deployed",
            "name": "Environment",
            "color": "#D9534E",
            "enabled": false,
            "regex": ""
        },
        {
            "description": "A branch collects experimental work, and not expected to be merged into mainline",
            "name": "Experimental",
            "color": "#D1D100",
            "enabled": false,
            "regex": ""
        }
    ]
}

# 获取 2 个分支的 Base Commit 点

获取 2 个分支的 Base Commit 点 (merge-base)

GET /api/v3/projects/:id/repository/branches/merge_base

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
source_project_id integer(可选) 源项目 ID,默认为 id 的值
target_project_id integer(可选) 目标项目 ID,默认为 id 的值
source_branch string 源分支名
target_branch string(可选) 目标分支名,默认为 source_branch 的值
source_commit string(可选) 源 commit id,默认为 source_branch 的值
target_commit string(可选) 目标 commit id,默认为 target_branch 的值

返回值:

"f6b6ddcb80cde5fa7d6d844094c19d2cbef2ad2a"

# 合并分支

将分支或者 commit 合并到指定分支

PUT /api/v3/projects/:id/repository/branches/merge

参数:

参数 类型 描述
id integer 或 string 项目 ID 或 项目全路径 project_full_path
source_project_id integer(可选) 源项目 ID,默认为 id 的值
source_object_id string 源分支名或者 commit
target_branch string 目标分支名
merge_type string(可选) 合并方式,默认为普通合并 merge,可选 merge、rebase、squash
commit_message string(可选) 合并点提交信息 (merge_type=rebase 时必填)

返回值:

"f6b6ddcb80cde5fa7d6d844094c19d2cbef2ad2a"
lastUpdate: 4/10/2026, 11:35:39 AM