如何统计最近合并的Pull Request提交数量并实现自动化?
统计合并Pull Request的提交数量并实现自动化
一、使用Git命令手动/脚本化统计
如果已有目标仓库的本地副本,可通过以下方式获取合并PR的提交数:
方法1:通过合并提交哈希计算
每个合并提交包含两个父提交(分别对应PR合并前的目标分支头、PR源分支头),直接计算两个父提交之间的提交数量:
# 替换<merge-commit-hash>为实际的合并提交哈希 PARENTS=$(git show -s --pretty=%P <merge-commit-hash>) git rev-list --count $(echo $PARENTS | awk '{print $1}')..$(echo $PARENTS | awk '{print $2}')
方法2:通过PR编号临时拉取分支计算
如果知道PR的编号(如GitHub上的PR编号),可临时拉取PR的源分支,再和目标分支对比:
# 替换<PR-number>为实际PR编号,<target-branch>为合并目标分支(如main) git fetch origin pull/<PR-number>/head:temp-pr-branch git rev-list --count <target-branch>..temp-pr-branch git branch -D temp-pr-branch # 清理临时分支
脚本自动化示例
写一个简单的Shell脚本,接收PR编号和目标分支参数,自动输出提交数:
#!/bin/bash PR_NUMBER=$1 TARGET_BRANCH=$2 git fetch origin pull/$PR_NUMBER/head:temp-pr-branch > /dev/null 2>&1 COMMIT_COUNT=$(git rev-list --count $TARGET_BRANCH..temp-pr-branch) echo $COMMIT_COUNT git branch -D temp-pr-branch > /dev/null 2>&1
二、使用API实现自动化(以GitHub为例)
如果需要完全自动化且无需本地仓库,可直接调用仓库平台的API:
1. 获取指定PR的提交数
调用PR详情接口,返回的JSON数据中commits字段即为该PR的提交总数:
# 替换<owner>、<repo>、<PR-number>为实际值,<token>为你的GitHub访问令牌 curl -H "Authorization: token <token>" \ https://api.github.com/repos/<owner>/<repo>/pulls/<PR-number> | jq '.commits'
2. 获取最近合并的PR的提交数
先查询最近关闭且已合并的PR,再提取其提交数:
# 获取最近合并的PR的提交数 curl -H "Authorization: token <token>" \ https://api.github.com/repos/<owner>/<repo>/pulls?state=closed&sort=updated&direction=desc&per_page=1 | jq '.[0] | select(.merged_at != null) | .commits'
注:如果使用其他Git平台(如GitLab、Gitee),可参考对应平台的API文档,逻辑类似——先获取PR详情,提取提交数字段。
内容的提问来源于stack exchange,提问作者renzCNFT
相关产品推荐
相关产品推荐

