来自提交哈希的 GitHub 拉取请求 ID

Jos*_*lva 7 git github github-api

如何从提交哈希中获取 GitHub PR id?可以在 git 控制台或 GitHub API 中使用吗?

Poo*_*cha 10

使用 GitHub API (V3) 绝对是可能的。要获得 PR ID,您需要使用 GitHub Search Issues API 并首先找到 PR 编号,然后您可以使用 PR 编号查找 PR 编号。请注意,拉取请求将具有拉取请求 ID 和单独的问题 ID。

例如,假设您有一个提交 sha - 7dd1bcf5f2f5eeed34cc2ec63053098fba302b6c。要从此 sha 中找到 PR id,您可以执行以下操作:

第一步:使用commit sha查找PR号:使用Github搜索api- https://api.github.com/search/issues?q=sha:7dd1bcf5f2f5eeed34cc2ec63053098fba302b6c。在 JSON 响应中,字段“number”代表 PR 编号(在本例中为 16),“ID”代表问题 ID(不是 PR ID)

第 2 步:使用 PR 编号和回购详细信息查找 PR ID。从步骤 1 中收到的 JSON 响应,我们可以构建以下内容 - https://api.github.com/repos/lamassu/lamassu-admin/pulls/16. 在收到的 JSON 响应中,“ID”字段是所需的 PR ID。

  • 如此有价值,我刚刚制作了一个脚本:https://gist.github.com/cbosdo/e67fc8044015caeb3392e4999e66fdef (2认同)

xp-*_*vit 7

我花了相当多的时间进行调查,结果如下。该解决方案仅使用基本的 Git 功能,不需要任何 GitHub 功能。打印拉取请求 ID 的简单 sh 行:

\n
git ls-remote origin \'pull/*/head\' | grep -F -f <(git rev-parse HEAD) | awk -F\'/\' \'{print $3}\'\n
Run Code Online (Sandbox Code Playgroud)\n

在 Groovy Jenkinsfile 中我正在执行以下操作:

\n
def gitCommitSHA = sh(returnStdout: true, script: \'git rev-parse  HEAD\').trim()\ndef allPRs = sh(returnStdout: true, script: "origin \xe2\x80\x98pull/*/head\xe2\x80\x99")\nList result = allPRs.split( \'\\n\' ).findAll { it.contains(gitCommitSHA) && it.contains("refs/pull") }\nif (result.size() ==1 ){\n  def str = result[0]\n  def prId = str.substring(str.indexOf("pull")+5,str.lastIndexOf("head")-1)\n  echo "Pull request id: ${prId}"\n}\n
Run Code Online (Sandbox Code Playgroud)\n