我正在寻找一些命令,告诉我在单个拉取请求中提交的文件数量。我想从一开始就知道单个拉取请求中的文件数量。
现实生活中解释的问题:让某些myProject
某人提出了一个拉取请求号100
,其中15
个文件发生了变化。
我正在寻找一个命令,列出从1到100的所有拉取请求以及更改文件的数量。
即。
答案 0 :(得分:6)
您可以获得这样的远程拉取请求列表:
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存储库中保留为refs,因此这将始终迭代过去和现在的每个可用拉取请求。
您可以通过缓存本地有关您之前检查过的最高PR编号的信息,然后跳过所有较低的PR来解决此问题。
答案 1 :(得分:0)
这适用于bitbucket
git ls-remote origin 'pull-requests/*'