如何找出包含特定文件更改的拉取请求?

BMW*_*BMW 6 git github

在 Github 上的大型开源存储库上工作。有超过 300 个拉取请求 (PR) 等待队列合并到主分支。

我想在文件中添加功能,在此之前,我需要确保不存在进行相同更改的现有 PR。

那么如何找出包含特定文件更改的拉取请求呢?

BMW*_*BMW 1

得到@Philippe和@knight9631的帮助,我得到了预期的结果。

先决条件

upstream按照@Philippe 的回复中的描述进行更改。

$ git remote add upstream https://github.com/[orga]/[project].git

# add fetch = +refs/pull/*/head:refs/remotes/origin/pr/* to .git/config in session origin

$ git fetch --all
Run Code Online (Sandbox Code Playgroud)

获取尚未合并的相关 PR。

运行下面的脚本。

FILENAME=$1

git log --all --format=%d $FILENAME|awk -F "[\/|\)]" '/pr/{print $3}' |sort -n |while read line
do
  state=$(curl -s https://api.github.com/repos/ansible/ansible/pulls/$line|jq -r .state)
  if [[ $state == "open" ]]; then
    echo "PR $line hasn't been merged"
  fi
done
Run Code Online (Sandbox Code Playgroud)

演示

$ bash PR.sh abc.json

PR 22857 hasn't been merged
PR 19231 hasn't been merged
PR 22981 hasn't been merged
Run Code Online (Sandbox Code Playgroud)

笔记:

获取Github API时需要添加授权token。否则很容易达到限速

TOKEN="<your_own_token"

state=$(curl -s -H "Authorization: token $TOKEN" https://api.github.com/repos/ansible/ansible/pulls/$line|jq -r .state)
Run Code Online (Sandbox Code Playgroud)