如何通过GitLab API获取MR层面的代码行数净变更统计值
GitLab MR级净代码变更行数API使用方案
GitLab官方原生提供了直接返回MR维度净代码变更统计的API,无需自行累加该MR下所有Commit的统计值,具体使用方式如下:
- 调用API路径为
GET /projects/:id/merge_requests/:merge_request_iid - 请求时必须携带参数
statistics=true,返回结果中会包含三个和代码变更相关的核心字段:changes_count:对应MR页面「变更」顶部展示的总变更行数diff_stats.additions:该MR维度的净新增代码行数diff_stats.deletions:该MR维度的净删除代码行数
上述三个字段的统计逻辑和UI完全一致,会自动抵消同一行代码多次增删的重复统计,比如你提到的「第一个Commit加10行、第二个Commit删相同10行」的场景,最终返回的
additions和deletions均为0,不会出现累加Commit得到20行新增的错误结果。
如果使用curl请求,示例代码如下:curl --header "PRIVATE-TOKEN: <你的私有访问令牌>" "https://<你的GitLab实例域名>/api/v4/projects/<项目ID>/merge_requests/<MR的IID>?statistics=true"
如果你的GitLab实例版本低于13.10,该statistics参数尚未支持,可以改用 GET /projects/:id/merge_requests/:merge_request_iid/diffs 接口拉取全量diff内容,自行统计净增删行数,最终结果也会和UI保持一致。
内容的提问来源于stack exchange,提问作者da75
相关产品推荐
相关产品推荐

