我正在寻找一些命令,它告诉我在单个拉请求中提交的文件数量。我想从一开始就知道单个拉取请求中文件的数量。
在现实生活场景中解释的问题:假设对于某些myProject
,有人提出了一个pull request number 100
,其中15
文件发生了变化。
我正在寻找一个命令,该命令列出了从1到100的所有拉请求,其中包含更改的文件计数。
请回答wrto Windows 7
。
- PR号100在10个文件中有变化
- PR号99有5个文件的变化
- PR号98修改了6个文件
- PR号96在22个文件中有更改
- -
- -
- -
- -
- PR号50有7个文件的变化
- 。
- 。
- 。
- 。
- PR Number 10在2个文件中有更改
- 。
- 。
- 。
- 。
- PR 1有23个文件更改
您可以像这样获得远程拉取请求列表:
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
在标准输出上产生如下输出:
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来解决此问题。
适用于bitbucket
git ls-remote origin 'pull-requests/*'
以上答案对我不起作用,所以我尝试了一个技巧来获得总拉请求。我开始探索git log
,发现对于合并的PR,提交消息看起来像这样-
99041a85a Merged in pankaj_dev (pull request #3298)
如果你发现这里有任何技术上的不准确,请纠正我。但是我使用这个逻辑来获得合并pr的计数。
git log --author="Pankaj Tanwar" --oneline --shortstat | grep "pull request" | awk '{ total+=1;} END { print total; }'
要计算总提交和总代码行数,请查看这个博客
您可以通过以下命令获得拉取请求列表和文件更改。
brew install gh
gh pr list
gh pr view 3 --json changedFiles # 3 is PR number
更多信息- https://cli.github.com