gpt4 book ai didi

git - 如何列出所有更改文件数的 pull 请求

转载 作者:太空狗 更新时间:2023-10-29 14:27:56 26 4
gpt4 key购买 nike

我正在寻找一些命令,它告诉我在单个 pull 请求中提交的文件数。我想从一开始就知道单个 pull 请求中的文件数。

在现实生活场景中解释的问题:假设对于某些 myProject,有人提出了一个 pull 请求编号 100,该请求在 15 文件中发生了变化。

我正在寻找一个命令,它列出从 1 到 100 的所有 pull 请求以及已更改文件的数量。

请回答 wrto 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 个文件

最佳答案

您可以获得这样的远程 pull 请求列表:

git ls-remote origin 'pull/*/head'

(假设 origin 是您的 GitHub Remote 的名称)

对于给定的提交,您可以获得这样的更改文件列表:

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 重定向来处理)。

这几乎可以满足您的需求,但有一个主要警告: pull 请求在您的远程 GitHub 存储库中作为引用持续存在,即使在它们关闭后也是如此,因此这将始终遍历过去和现在的每个可用 pull 请求。

您可以通过在本地缓存有关您之前检查过的最高 PR 编号的信息,然后跳过所有较低的 PR 来解决此问题。

关于git - 如何列出所有更改文件数的 pull 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40182366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com