如何通过GitLab API获取用户的merge_requests相关贡献指标?
通过GitLab API获取用户Merge Request贡献指标
可以通过GitLab API获取你需要的四类MR相关指标,具体实现方式如下:
1. 发起的Merge Requests总数
使用列出Merge Requests接口,指定author_id筛选目标用户发起的所有MR,直接读取响应结果中的total_count字段即可得到总数,无需手动分页统计。
示例请求:
GET /api/v4/merge_requests?author_id=<USER_ID>&state=all
state=all包含已合并、关闭、打开等所有状态的MR,若只需统计特定状态可修改该参数(如merged)。
2. 为其他MR提供的评审评论总数
需结合两个接口实现:
- 先获取目标用户发起的所有MR ID列表(使用上述第1点的接口,添加
fields=id参数仅返回ID); - 调用列出所有MR评论接口,筛选目标用户发布的评论,再排除掉属于自己发起的MR的评论,剩余数量即为所求。
示例请求:
# 获取用户发起的MR ID列表 GET /api/v4/merge_requests?author_id=<USER_ID>&state=all&fields=id # 获取用户发布的所有MR评论 GET /api/v4/notes?target_type=merge_request&author_id=<USER_ID>
遍历评论结果,过滤掉target_id属于自己MR ID列表的条目,统计剩余条目数量。
3. 为其他MR完成的审批总数
使用列出Merge Requests接口,通过approved_by_ids筛选目标用户审批过的MR,再排除掉自己发起的MR,统计剩余数量。
示例请求:
GET /api/v4/merge_requests?approved_by_ids=<USER_ID>&state=all
遍历返回的MR列表,过滤掉author_id等于目标用户ID的条目,统计剩余条目数量即为审批总数。
4. 自身MR收到的评审评论总数
结合两个接口实现:
- 获取目标用户发起的所有MR ID列表;
- 调用列出MR评论接口,筛选这些MR下由其他用户发布的评论,累加总数。
示例请求:
# 获取用户发起的MR ID列表 GET /api/v4/merge_requests?author_id=<USER_ID>&state=all&fields=id # 获取指定MR的评论(可批量处理或遍历每个MR调用) GET /api/v4/merge_requests/<MR_ID>/notes
对每个MR的评论结果,过滤掉author_id等于目标用户ID的条目,累加所有符合条件的评论数量。
注意:GitLab API默认分页为20条/页,若数据量较大需处理分页逻辑(通过
page和per_page参数),确保统计完整。
内容的提问来源于stack exchange,提问作者Mithun Shreevatsa
相关产品推荐
相关产品推荐

