如何列出所有更改文件数的拉取请求
how to list all pull request with count of files changed
我正在寻找一些命令,它告诉我在单个拉取请求中提交的文件数。我想从一开始就知道单个拉取请求中的文件数。
在现实生活中解释的问题:假设有人 myProject
提出了一个拉取请求编号 100
,它在 15
个文件中发生了变化。
我正在寻找一个命令,它列出从 1 到 100 的所有拉取请求以及已更改文件的数量。
请回答Windows 7.
即
- PR Number 100 在 10 个文件中有更改
- PR Number 99 修改了5个文件
- PR Number 98 修改了6个文件
- PR Number 96 在 22 个文件中有更改
- -
- -
- -
- -
- PR Number 50 在 7 个文件中有更改
- .
- .
- .
- .
- PR Number 10 在 2 个文件中有更改
- .
- .
- .
- .
- PR Number 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 }' |
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 存储库中作为引用持续存在,即使它们已关闭,因此这将始终迭代每个可用的拉取请求,过去和现在。
您可以通过在本地缓存有关您之前检查过的最高 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; }'
要计算总提交量和贡献的代码总行数,请查看 this blog
您可以通过以下命令获取 pull-request 列表和文件更改。
brew install gh
gh pr list
gh pr view 3 --json changedFiles # 3 is PR number
更多信息 - https://cli.github.com
我正在寻找一些命令,它告诉我在单个拉取请求中提交的文件数。我想从一开始就知道单个拉取请求中的文件数。
在现实生活中解释的问题:假设有人 myProject
提出了一个拉取请求编号 100
,它在 15
个文件中发生了变化。
我正在寻找一个命令,它列出从 1 到 100 的所有拉取请求以及已更改文件的数量。
请回答Windows 7.
即
- PR Number 100 在 10 个文件中有更改
- PR Number 99 修改了5个文件
- PR Number 98 修改了6个文件
- PR Number 96 在 22 个文件中有更改
- -
- -
- -
- -
- PR Number 50 在 7 个文件中有更改
- .
- .
- .
- .
- PR Number 10 在 2 个文件中有更改
- .
- .
- .
- .
- PR Number 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 }' |
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 存储库中作为引用持续存在,即使它们已关闭,因此这将始终迭代每个可用的拉取请求,过去和现在。
您可以通过在本地缓存有关您之前检查过的最高 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; }'
要计算总提交量和贡献的代码总行数,请查看 this blog
您可以通过以下命令获取 pull-request 列表和文件更改。
brew install gh
gh pr list
gh pr view 3 --json changedFiles # 3 is PR number
更多信息 - https://cli.github.com