如何通过Azure DevOps REST API获取两个标签间的代码变更行数?
获取Azure DevOps仓库两标签间代码行数变更的正确方法
问题拆解
你碰到的核心问题:
- Git Diffs API返回的
changeCounts仅统计文件变更数量,并非代码行数 - 仅用单个提交ID调用Commits Get Changes API,无法覆盖两个标签之间的所有提交记录
解决步骤
获取标签对应的提交ID
调用Git Refs API,传入目标标签名称,获取该标签指向的提交SHA值。拉取两标签间的完整提交列表
使用Git Commits API,指定fromCommitId和toCommitId参数(即两个标签对应的提交ID),获取这段区间内的所有提交记录。遍历提交统计代码行数
对每一条提交的ID,调用Commits Get Changes API:- 接口返回的
changes数组中,每个变更项包含diff字段,该字段记录了具体的代码变动内容 - 解析
diff内容,统计以+开头的新增代码行数、以-开头的删除代码行数 - 将所有提交的统计结果汇总,得到两个标签间的总代码变更行数
- 接口返回的
注意事项
- 若需要精准统计,可在解析
diff时排除注释行、空行等非业务代码行 - 当区间内提交数量较多时,建议添加分页参数分批请求,避免出现超时或请求失败的情况
内容的提问来源于stack exchange,提问作者sai anudeep
相关产品推荐
相关产品推荐

