# 拣选
如果使用 project_full_path,确保 project_full_path 编码过,例子:/api/v3/projects/tencent/code--> /api/v3/projects/tencent%2Fcode (/ 编码 %2F)
# 拣选提交点
将多个提交点拣选到目标分支,如果选择通过创建 MR 来拣选,就会创建一个新的 MR,并将 commit 点拣选到 MR 的源分支,否则直接拣选。如果拣选冲突,则会同时创建一个拣选任务。
审批人规则:
-1:所有评审人通过,1:单评审通过,2+:多评审通过 (用>=2 的数字代表需要几位必要评审人通过)。必要审批人规则:
-1:所有必要评审人通过,1:单必要评审通过,2+:多必要评审通过 (用>=2 的数字代表需要几位必要评审人通过),0: 不需要必要评审人即可通过。
POST /api/v3/projects/:id/cherry_picks
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer or string | 项目 ID 或 项目全路径 project_full_path |
| commits | array of string | 拣选点,例如 ["a86e631d9229c9b5457efc076af8ecb8bff13f40","107fe101a2d087cc5a8c146f564630bd9cc8dd5f"] |
| target_branch | string | 拣选的目标分支 |
| create_mr | boolean(可选) | 是否创建 MR,默认为 true |
| title | string | 合并请求的标题 |
| assignee_id | integer(可选) | 负责人 id |
| description | string(可选) | 合并请求的描述 |
| labels | string(可选) | 合并请求的标签,多个请用英文逗号分隔 |
| reviewers | string(可选) | 评审人 id (只能是 id。多个评审人请用英文逗号分隔) |
| necessary_reviewers | string(可选) | 必要评审人 id (只能是 id。多个评审人请用英文逗号分隔) |
| approver_rule | integer(可选) | 评审人规则 |
| necessary_approver_rule | integer(可选) | 必要评审人规则 |
| selected_files | array of string (可选) | 传重点文件路径数组,参数为空时默认所有都是重点文件 |
返回值:
{
"merge_request": {
"labels": [],
"id": 1601168,
"title": "[WIP] 拣选测试",
"target_project_id": 10713232,
"target_branch": "master",
"source_project_id": 10713232,
"source_branch": "cherry-pick-00d4c785-6",
"state": "opened",
"merge_status": "can_be_merged",
"commit_check_state": null,
"commit_check_block": false,
"iid": 11,
"description": "更新文件\n\n(cherry picked from commit 00d4c785)",
"created_at": "2024-03-21T07:41:40+0000",
"updated_at": "2024-03-21T07:41:41+0000",
"resolved_at": null,
"merge_type": null,
"assignee": null,
"author": {
"id": 190099,
"username": "user_01",
"web_url": "https://git.tencent.com/u/user_01",
"name": "user_01",
"state": "active",
"avatar_url": "https://assets.code.tencent.com/common/images/avatar/default_user_avatar.png"
},
"merge_commit_sha": null,
"milestone": null,
"necessary_reviewers": [],
"suggestion_reviewers": [],
"project_id": 10713232,
"work_in_progress": true,
"upvotes": 0,
"downvotes": 0
},
"conflict": true,
"conflicted_commit_id": "00d4c7851747a6338c30dceaab3d37de552bc9e1",
"conflicted_files": [
"asas"
],
"cherry_pick": {
"id": 1312131,
"target_branch": "cherry-pick-00d4c785-6",
"iid": 13,
"cherry_pick_status": "conflict",
"merge_request_id": 1601168,
"created_at": "2024-03-21T07:41:41+0000",
"updated_at": "2024-03-21T07:41:41+0000",
"cherry_picked_at": null,
"author": {
"id": 190099,
"username": "user_01",
"web_url": "https://git.tencent.com/u/user_01",
"name": "user_01",
"state": "active",
"avatar_url": "https://assets.code.tencent.com/common/images/avatar/default_user_avatar.png"
},
"source_project": {
"id": 10713232,
"description": "",
"public": false,
"archived": false,
"visibility_level": 10,
"namespace": {
"created_at": "2021-03-06T07:13:25+0000",
"description": "user_01",
"id": 194159,
"name": "user_01",
"owner_id": 190099,
"path": "user_01",
"updated_at": "2021-03-06T07:13:25+0000"
},
"name": "user_01_test_owner",
"name_with_namespace": "user_01/user_01_test_owner",
"path": "user_01_test_owner",
"path_with_namespace": "user_01/user_01_test_owner",
"ssh_url_to_repo": "git@git.tencent.com:user_01/user_01_test_owner.git",
"http_url_to_repo": "http://git.tencent.com/user_01/user_01_test_owner.git",
"https_url_to_repo": "https://git.tencent.com/user_01/user_01_test_owner.git",
"web_url": "http://git.tencent.com/user_01/user_01_test_owner",
"created_at": "2023-02-02T08:43:23+0000",
"last_activity_at": "2024-03-21T07:32:28+0000",
"creator_id": 190099,
"avatar_url": "http://git.tencent.com/uploads/project/avatar/10713232"
},
"target_project": {
"id": 10713232,
"description": "",
"public": false,
"archived": false,
"visibility_level": 10,
"namespace": {
"created_at": "2021-03-06T07:13:25+0000",
"description": "user_01",
"id": 194159,
"name": "user_01",
"owner_id": 190099,
"path": "user_01",
"updated_at": "2021-03-06T07:13:25+0000"
},
"name": "user_01_test_owner",
"name_with_namespace": "user_01/user_01_test_owner",
"path": "user_01_test_owner",
"path_with_namespace": "user_01/user_01_test_owner",
"ssh_url_to_repo": "git@git.tencent.com:user_01/user_01_test_owner.git",
"http_url_to_repo": "http://git.tencent.com/user_01/user_01_test_owner.git",
"https_url_to_repo": "https://git.tencent.com/user_01/user_01_test_owner.git",
"web_url": "http://git.tencent.com/user_01/user_01_test_owner",
"created_at": "2023-02-02T08:43:23+0000",
"last_activity_at": "2024-03-21T07:32:28+0000",
"creator_id": 190099,
"avatar_url": "http://git.tencent.com/uploads/project/avatar/10713232"
},
"cherry_pick_commits": [
{
"id": 13,
"project_id": 10713232,
"cherry_pick_status": "opened",
"commit_id": "00d4c7851747a6338c30dceaab3d37de552bc9e1",
"cherry_pick_id": 1312131,
"sequence_no": 1,
"created_at": "2024-03-21T07:41:42+0000",
"updated_at": "2024-03-21T07:41:42+0000",
"cherry_picked_at": null
}
]
},
"ide_conflict_solve_url": "https://git.tencent.com/ide/user_01/p_test/-/cherry_picks/1"
}
# 查询项目拣选任务 (根据 id)
查询项目下某个指定的拣选任务
GET /api/v3/projects/:id/cherry_picks/:cherry_pick_id
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer or string | 项目 ID 或 项目全路径 project_full_path |
| cherry_pick_id | integer | 拣选任务的 id |
返回值:
{
"merge_request": {
"labels": [],
"id": 1601168,
"title": "[WIP] 拣选测试",
"target_project_id": 10713232,
"target_branch": "master",
"source_project_id": 10713232,
"source_branch": "cherry-pick-00d4c785-6",
"state": "opened",
"merge_status": "can_be_merged",
"commit_check_state": null,
"commit_check_block": false,
"iid": 11,
"description": "更新文件\n\n(cherry picked from commit 00d4c785)",
"created_at": "2024-03-21T07:41:40+0000",
"updated_at": "2024-03-21T07:41:41+0000",
"resolved_at": null,
"merge_type": null,
"assignee": null,
"author": {
"id": 190099,
"username": "user_01",
"web_url": "https://git.tencent.com/u/user_01",
"name": "user_01",
"state": "active",
"avatar_url": "https://assets.code.tencent.com/common/images/avatar/default_user_avatar.png"
},
"merge_commit_sha": null,
"milestone": null,
"necessary_reviewers": [],
"suggestion_reviewers": [],
"project_id": 10713232,
"work_in_progress": true,
"upvotes": 0,
"downvotes": 0
},
"conflict": true,
"conflicted_commit_id": "00d4c7851747a6338c30dceaab3d37de552bc9e1",
"conflicted_files": [
"asas"
],
"cherry_pick": {
"id": 1312131,
"target_branch": "cherry-pick-00d4c785-6",
"iid": 13,
"cherry_pick_status": "conflict",
"merge_request_id": 1601168,
"created_at": "2024-03-21T07:41:41+0000",
"updated_at": "2024-03-21T07:41:41+0000",
"cherry_picked_at": null,
"author": {
"id": 190099,
"username": "user_01",
"web_url": "https://git.tencent.com/u/user_01",
"name": "user_01",
"state": "active",
"avatar_url": "https://assets.code.tencent.com/common/images/avatar/default_user_avatar.png"
},
"source_project": {
"id": 10713232,
"description": "",
"public": false,
"archived": false,
"visibility_level": 10,
"namespace": {
"created_at": "2021-03-06T07:13:25+0000",
"description": "user_01",
"id": 194159,
"name": "user_01",
"owner_id": 190099,
"path": "user_01",
"updated_at": "2021-03-06T07:13:25+0000"
},
"name": "user_01_test_owner",
"name_with_namespace": "user_01/user_01_test_owner",
"path": "user_01_test_owner",
"path_with_namespace": "user_01/user_01_test_owner",
"ssh_url_to_repo": "git@git.tencent.com:user_01/user_01_test_owner.git",
"http_url_to_repo": "http://git.tencent.com/user_01/user_01_test_owner.git",
"https_url_to_repo": "https://git.tencent.com/user_01/user_01_test_owner.git",
"web_url": "http://git.tencent.com/user_01/user_01_test_owner",
"created_at": "2023-02-02T08:43:23+0000",
"last_activity_at": "2024-03-21T07:32:28+0000",
"creator_id": 190099,
"avatar_url": "http://git.tencent.com/uploads/project/avatar/10713232"
},
"target_project": {
"id": 10713232,
"description": "",
"public": false,
"archived": false,
"visibility_level": 10,
"namespace": {
"created_at": "2021-03-06T07:13:25+0000",
"description": "user_01",
"id": 194159,
"name": "user_01",
"owner_id": 190099,
"path": "user_01",
"updated_at": "2021-03-06T07:13:25+0000"
},
"name": "user_01_test_owner",
"name_with_namespace": "user_01/user_01_test_owner",
"path": "user_01_test_owner",
"path_with_namespace": "user_01/user_01_test_owner",
"ssh_url_to_repo": "git@git.tencent.com:user_01/user_01_test_owner.git",
"http_url_to_repo": "http://git.tencent.com/user_01/user_01_test_owner.git",
"https_url_to_repo": "https://git.tencent.com/user_01/user_01_test_owner.git",
"web_url": "http://git.tencent.com/user_01/user_01_test_owner",
"created_at": "2023-02-02T08:43:23+0000",
"last_activity_at": "2024-03-21T07:32:28+0000",
"creator_id": 190099,
"avatar_url": "http://git.tencent.com/uploads/project/avatar/10713232"
},
"cherry_pick_commits": [
{
"id": 13,
"project_id": 10713232,
"cherry_pick_status": "opened",
"commit_id": "00d4c7851747a6338c30dceaab3d37de552bc9e1",
"cherry_pick_id": 1312131,
"sequence_no": 1,
"created_at": "2024-03-21T07:41:42+0000",
"updated_at": "2024-03-21T07:41:42+0000",
"cherry_picked_at": null
}
]
},
"ide_conflict_solve_url": "https://git.tencent.com/ide/user_01/p_test/-/cherry_picks/1"
}
# 查询项目拣选任务 (根据 iid)
查询项目下某个指定拣选任务
GET /api/v3/projects/:id/cherry_picks/iid/:cherry_pick_iid
参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | integer or string | 项目 ID 或 项目全路径 project_full_path |
| cherry_pick_iid | integer | 拣选任务在项目中的编号 iid |
返回值:
{
"merge_request": {
"labels": [],
"id": 1601168,
"title": "[WIP] 拣选测试",
"target_project_id": 10713232,
"target_branch": "master",
"source_project_id": 10713232,
"source_branch": "cherry-pick-00d4c785-6",
"state": "opened",
"merge_status": "can_be_merged",
"commit_check_state": null,
"commit_check_block": false,
"iid": 11,
"description": "更新文件\n\n(cherry picked from commit 00d4c785)",
"created_at": "2024-03-21T07:41:40+0000",
"updated_at": "2024-03-21T07:41:41+0000",
"resolved_at": null,
"merge_type": null,
"assignee": null,
"author": {
"id": 190099,
"username": "user_01",
"web_url": "https://git.tencent.com/u/user_01",
"name": "user_01",
"state": "active",
"avatar_url": "https://assets.code.tencent.com/common/images/avatar/default_user_avatar.png"
},
"merge_commit_sha": null,
"milestone": null,
"necessary_reviewers": [],
"suggestion_reviewers": [],
"project_id": 10713232,
"work_in_progress": true,
"upvotes": 0,
"downvotes": 0
},
"conflict": true,
"conflicted_commit_id": "00d4c7851747a6338c30dceaab3d37de552bc9e1",
"conflicted_files": [
"asas"
],
"cherry_pick": {
"id": 1312131,
"target_branch": "cherry-pick-00d4c785-6",
"iid": 13,
"cherry_pick_status": "conflict",
"merge_request_id": 1601168,
"created_at": "2024-03-21T07:41:41+0000",
"updated_at": "2024-03-21T07:41:41+0000",
"cherry_picked_at": null,
"author": {
"id": 190099,
"username": "user_01",
"web_url": "https://git.tencent.com/u/user_01",
"name": "user_01",
"state": "active",
"avatar_url": "https://assets.code.tencent.com/common/images/avatar/default_user_avatar.png"
},
"source_project": {
"id": 10713232,
"description": "",
"public": false,
"archived": false,
"visibility_level": 10,
"namespace": {
"created_at": "2021-03-06T07:13:25+0000",
"description": "user_01",
"id": 194159,
"name": "user_01",
"owner_id": 190099,
"path": "user_01",
"updated_at": "2021-03-06T07:13:25+0000"
},
"name": "user_01_test_owner",
"name_with_namespace": "user_01/user_01_test_owner",
"path": "user_01_test_owner",
"path_with_namespace": "user_01/user_01_test_owner",
"ssh_url_to_repo": "git@git.tencent.com:user_01/user_01_test_owner.git",
"http_url_to_repo": "http://git.tencent.com/user_01/user_01_test_owner.git",
"https_url_to_repo": "https://git.tencent.com/user_01/user_01_test_owner.git",
"web_url": "http://git.tencent.com/user_01/user_01_test_owner",
"created_at": "2023-02-02T08:43:23+0000",
"last_activity_at": "2024-03-21T07:32:28+0000",
"creator_id": 190099,
"avatar_url": "http://git.tencent.com/uploads/project/avatar/10713232"
},
"target_project": {
"id": 10713232,
"description": "",
"public": false,
"archived": false,
"visibility_level": 10,
"namespace": {
"created_at": "2021-03-06T07:13:25+0000",
"description": "user_01",
"id": 194159,
"name": "user_01",
"owner_id": 190099,
"path": "user_01",
"updated_at": "2021-03-06T07:13:25+0000"
},
"name": "user_01_test_owner",
"name_with_namespace": "user_01/user_01_test_owner",
"path": "user_01_test_owner",
"path_with_namespace": "user_01/user_01_test_owner",
"ssh_url_to_repo": "git@git.tencent.com:user_01/user_01_test_owner.git",
"http_url_to_repo": "http://git.tencent.com/user_01/user_01_test_owner.git",
"https_url_to_repo": "https://git.tencent.com/user_01/user_01_test_owner.git",
"web_url": "http://git.tencent.com/user_01/user_01_test_owner",
"created_at": "2023-02-02T08:43:23+0000",
"last_activity_at": "2024-03-21T07:32:28+0000",
"creator_id": 190099,
"avatar_url": "http://git.tencent.com/uploads/project/avatar/10713232"
},
"cherry_pick_commits": [
{
"id": 13,
"project_id": 10713232,
"cherry_pick_status": "opened",
"commit_id": "00d4c7851747a6338c30dceaab3d37de552bc9e1",
"cherry_pick_id": 1312131,
"sequence_no": 1,
"created_at": "2024-03-21T07:41:42+0000",
"updated_at": "2024-03-21T07:41:42+0000",
"cherry_picked_at": null
}
]
},
"ide_conflict_solve_url": "https://git.tencent.com/ide/user_01/p_test/-/cherry_picks/1"
}