You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitLab MR列表查看变更请求状态?API查询遇阻求助

问题

我希望在GitLab合并请求(MR)列表中直接查看哪些MR被提出了变更请求——比如批准状态能在列表里清晰显示,但提出变更请求的状态只能打开具体MR才能查看,找不到启用该显示的设置。

于是打算编写一个CI/CD脚本,在每次代码推送时调用GitLab API,给符合条件的MR添加特殊标签,但尝试以下几个API端点后都没获取到所需信息:

  • /api/v4/projects/{:id}/merge_requests/{:iid}:文档说明detailed_merge_status字段包含requested_changes状态,但实际仅返回discussions_not_resolved、draft、mergeable,即便测试用MR已有评审者提出变更请求,仍返回mergeable
  • /api/v4/projects/{:id}/merge_requests/{:iid}/notes:未找到有用信息
  • /api/v4/projects/{:id}/merge_requests/{:iid}/discussions:未找到有用信息

请问是否有遗漏的可用API端点?另外我尝试使用/request_changes快捷操作,但该操作似乎被过滤,GitLab官方文档也未找到相关说明,尽管在UI中能看到该操作建议。

可行的API端点与解决方法
  1. 调用评审状态端点获取变更请求信息
    使用/api/v4/projects/{:id}/merge_requests/{:iid}/approvals端点,返回结果中的approved_by数组里,每个评审记录的state字段会明确标记评审状态:当评审者提出变更请求时,该字段值为changes_requested。只需遍历该数组,只要存在state: "changes_requested"的条目,即可判定该MR存在变更请求。

  2. 关于detailed_merge_status字段的逻辑限制
    该字段的requested_changes状态仅在所有参与评审的用户都提出变更请求时才会返回。如果存在部分评审者批准、部分提变更的情况,该字段不会体现变更请求状态,只会返回mergeable或其他状态,这是GitLab目前的设计逻辑。

  3. /request_changes快捷操作的正确用法
    这个操作属于MR评审评论中的快捷命令,需要在UI的评审评论框中输入并提交,无法直接通过API调用。如果要在CI脚本中通过API实现提出变更请求的效果,可以调用/api/v4/projects/{:id}/merge_requests/{:iid}/reviews端点,设置参数event: "request_changes"来创建变更请求评审。

内容的提问来源于stack exchange,提问作者gtu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 20:51:05