你可以像这样获取远程拉取请求的列表:
git ls-remote origin 'pull/*/head'
(假设origin
是您的GitHub远程仓库名称)
对于给定的提交,您可以像这样获取更改文件的列表:
git show --pretty=format:'' --name-only <ref>
您可以将上述信息汇总到一个shell脚本中:
git ls-remote origin 'pull/*/head' | awk '{print $2}' |
while read ref; do
pr=$(echo $ref | cut -d/ -f3)
git fetch origin $ref > /dev/null
files_changed=$(git show --pretty=format:'' --name-only FETCH_HEAD|wc -l)
echo "PR number $pr has changes in $files_changed files"
done
它会在标准输出(stdout)上产生像这样的输出:
PR number 1 has changes in 4 files
PR number 10 has changes in 1 files
PR number 11 has changes in 4 files
PR number 12 has changes in 7 files
PR number 13 has changes in 5 files
(stderr也会有输出,您可以使用标准 shell I/O 重定向来处理。)
这基本上可以做到您想要的事情,但有一个主要的警告:即使已关闭,拉取请求在您的远程 GitHub 存储库中仍将作为 ref 持续存在,因此它将始终遍历每个可用的拉取请求,无论是过去还是现在。
您可以通过本地缓存关于先前检查过的最高 PR 编号的信息来解决此问题,然后跳过所有较低的 PR。
origin
作为暂存路径给develop
分支吗? - ankitdgh
命令行客户端,当然,现在和这个答案写出来时,更灵活的选择可能是直接利用 GitHub 的 REST API。 - larsks