# 拣选

如果使用 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"
}

lastUpdate: 8/2/2024, 5:28:21 PM