如何在 Github 上搜索针对特定文件的拉取请求?

如何在 Github 上搜索针对特定文件的拉取请求?

在 Github 上,我为一个大型 repo 做了很多工作,其中有数百个待处理的 PR。

当处理一个文件时,检查该文件上任何待处理的更改会很方便;这样我就可以避免重复工作来修复已经修复的错误,并留意可能的未来冲突。

此外,这种搜索比通过关键字搜索 PR 文本要高效得多……您知道,不必猜测其他人可能会如何措辞。

有没有办法让 Github 显示我想要的东西?“给我所有包含对文件 X 的修改建议的 PR”

如果该功能不存在,我很想知道可能的解决方法……或者我如何向 Github 提出功能请求。谢谢

答案1

Stack Overflow 帖子中也讨论了同样的问题
有没有办法查看哪些待处理的拉取请求影响了特定文件?

我复制如下 larsks 的回答 对于这个问题。


ElpieKay 的回答基本上就是我在评论中所建议的;这个答案有一个示例 shell 脚本,可以在很大程度上自动化该过程。

事实证明,获取打开的拉取请求列表相当容易;您只需以下curl命令行即可获取打开的请求的 JSON 列表:

curl https://api.github.com/repos/<user>/<repo>/pulls

例如:

curl https://api.github.com/repos/centos-opstools/opstools-ansible/pulls

然后,您可以使用类似以下方法从中提取拉取请求编号jq(该-s参数curl只是抑制了将 curl 输出传输到另一个命令时获得的某些状态输出):

curl -s https://api.github.com/repos/centos-opstools/opstools-ansible/pulls |
jq '.[]|.number'

然后,您可以获取该命令的输出并将其放入循环中以仅获取那些拉取请求并检查其中是否存在感兴趣的文件:

curl -s https://api.github.com/repos/centos-opstools/opstools-ansible/pulls |
jq '.[]|.number' |
while read pr; do
  git fetch --quiet origin refs/pull/$pr/head
  if git show --pretty=format:'' --name-only FETCH_HEAD | grep -q $file_i_care_about; then
    echo "PR $pr"
  fi
done

这将产生如下输出:

PR 82
PR 71
PR 69

上面假设变量file_i_care_about是一个包含您感兴趣的文件的变量。

答案2

使用 Github CLI

gh pr list --json url,files | jq 'map(select(.files | map(.path | contains("lib/myfile.txt")) | any))'

相关内容