GitHub从提交哈希中提取请求ID

时间:2017-08-11 12:26:42

标签: git github github-api

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

3 个答案:

答案 0 :(得分:4)

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

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

步骤1:使用提交sha查找PR编号:使用Github搜索api https://api.github.com/search/issues?q=sha:7dd1bcf5f2f5eeed34cc2ec63053098fba302b6c。从JSON响应,字段'编号'代表PR号码(在这种情况下为16)和' ID'代表问题ID(不是PR ID)

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

答案 1 :(得分:0)

我花了很多时间来调查它,结果如下。简单的sh行打印拉请求ID:

git ls-remote origin ‘pull/*/head’ | grep -F -f <(git rev-parse HEAD) | awk -F’/' ‘{print $3}’

在Jenkinsfile中:

def gitCommitSHA = sh(returnStdout: true, script: 'git rev-parse  HEAD').trim()
def allPRs = sh(returnStdout: true, script: "origin ‘pull/*/head’")
List result = allPRs.split( '\n' ).findAll { it.contains(gitCommitSHA) && it.contains("refs/pull") }
if (result.size() ==1 ){
    def str = result[0]
    def prId = str.substring(str.indexOf("pull")+5,str.lastIndexOf("head")-1)
    echo "Pull request id: ${prId}"
}

答案 2 :(得分:-1)

例如,提交SHA是:7dd1bcf5f2f5eeed34cc2ec63053098fba302b6c

  1. 转到“请求”标签
  2. 在过滤器中输入:is:pr is:closed 7dd1bcf5f2f5eeed34cc2ec63053098fba302b6c

如果PR未关闭,则卸下is:closed