如何列出所有已更改文件数的拉取请求

时间:2016-10-21 17:29:06

标签: git github version-control commit pull-request

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

现实生活中解释的问题:让某些myProject某人提出了一个拉取请求号100,其中15个文件发生了变化。

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

请回答Windows 7。

即。

  • PR号码100有10个文件的更改
  • PR编号99有5个文件的更改
  • PR编号98有6个文件的更改
  • PR编号96在22个文件中有更改
  • -
  • -
  • -
  • -
  • PR Number 50在7个文件中有变化
  • PR编号10有2个文件的更改
  • PR编号1在23个文件中有更改

2 个答案:

答案 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/*'