跳转至

更新 Pull Request设置

PUT /api/v5/repos/{owner}/{repo}/pull_request_settings

该接口用于更新指定仓库的 Pull Request 设置,可配置合并方式、评审与审批人数、流水线与讨论合入条件、Squash 合并、CLA 校验、轻量级合并请求及合并后关闭关联 Issue 等多项规则,未传入的字段保持原设置不变,成功后返回更新后的合并请求设置。

访问令牌支持说明

  • AtomGit 用户访问令牌(AtomGit user access tokens)

是否允许匿名访问

此接口不允许匿名访问

请求参数

参数名 位置 类型 必填 说明
owner path string 是 仓库所属空间地址(企业、组织或个人的地址path)
repo path string 是 仓库路径(path)
access_token query string 是 用户授权码

Request Body:

请求体为 JSON 对象,字段均为可选项(未传入的字段保持原有设置不变)。

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "approval_required_reviewers_enable": {
      "description": "是否启用审批必需的评审者功能",
      "type": "boolean"
    },
    "approval_required_reviewers": {
      "description": "需要的审批者数量(最小评审人数);取值范围 0~5,取消评审人功能传入 0",
      "type": "integer",
      "minimum": 0,
      "maximum": 5
    },
    "only_allow_merge_if_all_discussions_are_resolved": {
      "description": "评审问题全部解决才能合入",
      "type": "boolean"
    },
    "only_allow_merge_if_pipeline_succeeds": {
      "description": "是否仅在流水线成功后才允许合并",
      "type": "boolean"
    },
    "disable_merge_by_self": {
      "description": "禁止合入自己创建的合并请求",
      "type": "boolean"
    },
    "can_force_merge": {
      "description": "允许管理员强制合入",
      "type": "boolean"
    },
    "add_notes_after_merged": {
      "description": "允许合并请求合并后继续做代码检视和评论",
      "type": "boolean"
    },
    "mark_auto_merged_mr_as_closed": {
      "description": "是否将自动合并的MR状态标记为关闭状态",
      "type": "boolean"
    },
    "can_reopen": {
      "description": "是否可以重新打开一个已经关闭的合并请求",
      "type": "boolean"
    },
    "delete_source_branch_when_merged": {
      "description": "合并时是否删除源分支,默认删除原分支",
      "type": "boolean"
    },
    "disable_squash_merge": {
      "description": "禁止 Squash 合并",
      "type": "boolean"
    },
    "auto_squash_merge": {
      "description": "新建合并请求,默认开启 Squash 合并",
      "type": "boolean"
    },
    "merge_method": {
      "description": "合并模式三选一:通过 merge commit 合并(merge);通过 merge commit 合并、记录半线性历史(rebase_merge);fast-forward 合并(ff)",
      "type": "string",
      "enum": ["merge", "rebase_merge", "ff"]
    },
    "squash_merge_with_no_merge_commit": {
      "description": "Squash 合并不产生 Merge 节点",
      "type": "boolean"
    },
    "merged_commit_author": {
      "description": "使用 MR(合入/创建)者生成 Merge Commit:使用 PR 合入者生成 Merge Commit 传 merged_by;使用 PR 创建者生成 Merge Commit 传 created_by",
      "type": "string",
      "enum": ["merged_by", "created_by"]
    },
    "approval_required_approvers": {
      "description": "需要审批的批准者数量",
      "type": "integer",
      "maximum": 1000
    },
    "approval_approver_ids": {
      "description": "项目审查人,user_id 以逗号分隔",
      "type": "string"
    },
    "approval_tester_ids": {
      "description": "项目测试人,user_id 以逗号分隔",
      "type": "string"
    },
    "approval_required_testers": {
      "description": "测试最小通过人数",
      "type": "integer"
    },
    "is_check_cla": {
      "description": "是否校验CLA",
      "type": "boolean"
    },
    "is_allow_lite_merge_request": {
      "description": "是否启用轻量级 Pull Request",
      "type": "boolean"
    },
    "lite_merge_request_prefix_title": {
      "description": "轻量级 pr 的标题前缀",
      "type": "string"
    },
    "close_issue_when_mr_merged": {
      "description": "创建 Pull Request 时,默认选中“合并后关闭已关联的 Issue”;当禁用“合并后关闭已关联的 Issue”选项时该参数无效",
      "type": "boolean"
    },
    "forbidden_pr_related_issue_closed": {
      "description": "禁止 PR 关联关闭的 Issue(为 true 时,close_issue_when_mr_merged 会被强制置为 false)",
      "type": "boolean"
    }
  }
}

响应参数

字段 类型 必返 可为空 说明
merge_request_setting object 是 否 合并请求设置
only_allow_merge_if_all_discussions_are_resolved boolean 是 是 仅当所有讨论都已解决时允许合并
only_allow_merge_if_pipeline_succeeds boolean 是 是 仅当流水线成功时允许合并
merge_method string 是 是 合并方法,枚举:merge / rebase_merge / ff
only_allow_merge_if_vote_bigger_than integer 是 是 仅当投票数大于指定值时允许合并

merge_request_setting 对象

字段 类型 必返 可为空 说明
merge_request_setting.id integer 是 是 设置 ID
merge_request_setting.project_id integer 是 是 项目 ID
merge_request_setting.disable_merge_by_self boolean 是 是 禁止合入自己创建的合并请求
merge_request_setting.created_at string 是 是 创建时间
merge_request_setting.updated_at string 是 是 更新时间
merge_request_setting.can_force_merge boolean 是 是 允许管理员强制合入
merge_request_setting.disable_squash_merge boolean 是 是 禁止 Squash 合并
merge_request_setting.approval_required_reviewers integer 是 是 需要的审批者数量(最小评审人数)
merge_request_setting.approval_required_approvers integer 是 是 需要审批的批准者数量
merge_request_setting.add_notes_after_merged boolean 是 是 允许合并请求合并后继续做代码检视和评论
merge_request_setting.merged_commit_author string 是 是 生成 Merge Commit 的用户,枚举:merged_by / created_by
merge_request_setting.mark_auto_merged_mr_as_closed boolean 是 是 是否将自动合并的 MR 状态标记为关闭状态
merge_request_setting.delete_source_branch_when_merged boolean 是 是 合并时是否删除源分支
merge_request_setting.auto_squash_merge boolean 是 是 新建合并请求,默认开启 Squash 合并
merge_request_setting.squash_merge_with_no_merge_commit boolean 是 是 Squash 合并不产生 Merge 节点
merge_request_setting.close_issue_when_mr_merged boolean 是 是 合并时是否关闭已关联的 Issue
merge_request_setting.can_reopen boolean 是 是 是否可以重新打开一个已经关闭的合并请求
merge_request_setting.is_check_cla boolean 是 是 是否校验 CLA
merge_request_setting.approval_approvers object[] 是 是 项目审批人列表(用户对象数组)
merge_request_setting.approval_testers object[] 是 是 项目测试人列表(用户对象数组)
merge_request_setting.approval_required_testers integer 是 是 测试最小通过人数
merge_request_setting.is_allow_lite_merge_request boolean 是 是 是否启用轻量级 Pull Request
merge_request_setting.forbidden_pr_related_issue_closed boolean 否 是 是否禁用“合并后关闭已关联的 Issue”选项

失败响应

400 参数错误

当 forbidden_pr_related_issue_closed 与 close_issue_when_mr_merged 同时为 true 时,返回参数错误:

{
  "error": "invalid_request",
  "message": "The option Close associated issues after merging has been disabled."
}

401 未认证

{
  "error": "unauthorized",
  "message": "缺少或无效的访问令牌"
}

HTTP 响应状态码

状态码 说明
200 成功(OK)
401 需要认证(Requires authentication)
403 禁止访问(Forbidden)
404 请求路径不存在(Not found)
429 请求过于频繁(Too many requests)
500 系统内部错误(Internal server error)

请求示例

参数说明

<owner> 替换为仓库所属空间地址(企业、组织或个人的地址 path);<repo> 替换为仓库路径(path);<token> 替换为你的 AtomGit 用户访问令牌。

cURL

curl -X PUT 'https://api.atomgit.com/api/v5/repos/<owner>/<repo>/pull_request_settings?access_token=<token>' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "merge_method": "merge",
    "disable_merge_by_self": false,
    "can_force_merge": true
  }'

JavaScript

// 原生 fetch (Node.js 18+ / 浏览器)
const response = await fetch(
  "https://api.atomgit.com/api/v5/repos/<owner>/<repo>/pull_request_settings?access_token=<token>",
  {
    method: "PUT",
    headers: {
      "Accept": "application/json",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      merge_method: "merge",
      disable_merge_by_self: false,
      can_force_merge: true,
    }),
  }
);

if (!response.ok) {
  throw new Error(`请求失败: ${response.status}`);
}

const data = await response.json();
console.log(data);

Python

import requests

resp = requests.put(
    "https://api.atomgit.com/api/v5/repos/<owner>/<repo>/pull_request_settings",
    params={"access_token": "<token>"},
    json={
        "merge_method": "merge",
        "disable_merge_by_self": False,
        "can_force_merge": True,
    },
    headers={"Accept": "application/json"},
    timeout=10,
)
resp.raise_for_status()

print(resp.json())

响应示例

状态码: 200

{
  "merge_request_setting": {
    "id": 1431,
    "project_id": 2745002,
    "disable_merge_by_self": false,
    "created_at": "2024-03-28T10:04:13.523+08:00",
    "updated_at": "2024-11-13T21:30:45.261+08:00",
    "can_force_merge": false,
    "disable_squash_merge": true,
    "approval_required_reviewers": 0,
    "approval_required_approvers": 0,
    "add_notes_after_merged": false,
    "merged_commit_author": "merged_by",
    "mark_auto_merged_mr_as_closed": false,
    "delete_source_branch_when_merged": false,
    "auto_squash_merge": false,
    "squash_merge_with_no_merge_commit": false,
    "close_issue_when_mr_merged": false,
    "can_reopen": true,
    "is_check_cla": false,
    "approval_approvers": [],
    "approval_testers": [],
    "approval_required_testers": 0,
    "is_allow_lite_merge_request": false
  },
  "only_allow_merge_if_all_discussions_are_resolved": false,
  "only_allow_merge_if_pipeline_succeeds": false,
  "merge_method": "merge"
}

错误码

错误码 说明
400 参数错误或请求无法解析
401 未认证或凭证无效(缺少/无效的访问凭证)
403 禁止访问
404 请求路径不存在
405 请求方法不支持
429 请求过于频繁,触发限流
500 系统内部错误

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 gitcode-dev/atomgit-api-doc