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

如何查询GitLab Issue的迭代变更历史记录

GitLab Issue 迭代变更历史获取方案

一、API 查询方案

GitLab的资源变更历史统一归在系统笔记接口中,你之前未找到是因为迭代变更记录没有单独封装接口,而是存在Issue的事件/笔记列表中:

  • 调用REST API 端点:GET /projects/:id/issues/:issue_iid/notes,加上查询参数 system=true 过滤出系统自动生成的变更记录即可
  • 返回结果里body字段包含changed iteration to *Sprint X*的内容就是迭代变更记录,同时created_at字段对应变更操作的时间,author字段对应操作人
  • 如果你用GraphQL,可以查询Issue对象下的systemNotes字段,过滤action=iteration的记录即可拿到结构化的迭代变更前后值,不需要自行解析文本

二、数据库存储表对应

迭代变更的历史记录存在以下两个核心表:

  • notes表:所有系统笔记和用户评论都存在这张表,过滤system=true且noteable_type=Issue,同时note字段开头包含changed iteration to的记录就是你要的迭代变更流水,noteable_id对应Issue的ID,created_at是变更时间
  • resource_iteration_events表:这是GitLab 14.0之后新增的专门存储迭代关联变更事件的表,数据更结构化,不需要解析文本,直接存储了issue_id、old_iteration_id、new_iteration_id、created_at、user_id字段,是查询全量迭代流转轨迹的最优数据源,查询示例:
SELECT 
  issues.iid as issue_iid,
  old_it.name as old_sprint,
  new_it.name as new_sprint,
  resource_iteration_events.created_at as change_time,
  users.username as operator
FROM resource_iteration_events
LEFT JOIN issues ON resource_iteration_events.issue_id = issues.id
LEFT JOIN iterations old_it ON resource_iteration_events.old_iteration_id = old_it.id
LEFT JOIN iterations new_it ON resource_iteration_events.new_iteration_id = new_it.id
LEFT JOIN users ON resource_iteration_events.user_id = users.id
WHERE issues.iid = 目标工单IID AND issues.project_id = 对应项目ID
ORDER BY change_time ASC;

注意事项

  • 如果你的GitLab版本低于14.0,没有resource_iteration_events表,只能从notes表解析系统笔记获取变更记录
  • 调用REST API时如果返回数据量过大,可以加per_page=100和分页参数拉取全量数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:48:03