Pull Requests非常适合用于理解围绕一个或一组对回购所做的更改的更大的思考。读取拉取请求是一种快速“了解”项目的好方法,因为您得到的不是对源的小原子更改,而是更大的逻辑更改组。类似于将代码中的行组织成相关的“节”,以使其更容易阅读。

我发现自己正在查看一个文件或一个提交,我想知道是否有一种方法可以将提交回溯到最初创建它的Pull Request。Pull Request最终会被合并,但合并提交是不必要的。


当前回答

我也遇到了同样的问题,并编写了pr_for_sha bash helper,文档如下:

http://joey.aghion.com/find-the-github-pull-request-for-a-commit/

像pr_for_sha <COMMIT>那样调用它,它将在浏览器中打开相应的github拉请求页面。

其他回答

我想要一些类似的东西,为给定的提交找到PR,然后用Jenkins构建信息对PR进行评论。下面是使用GH API的工作原理:

# for a given SHA and repo
SHA=58d8b4407ab5d2b9a696236202308d92d3e25340
ownerRepo=redhat-developer/devspaces

# a. use gh to query a given repo for closed pulls for a given commitSHA; return the PR URL
PR_COMMENTS_URL=$(curl -sSL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github.v3+json" \
    "https://api.github.com/repos/${ownerRepo}/pulls?state=closed" | \
    yq -r --arg SHA "$SHA" '.[]|select(.head.sha == $SHA)|.comments_url')

# b. comment on the PR by URL: https://api.github.com/repos/redhat-developer/devspaces/issues/848/comments
if [[ $PR_COMMENTS_URL ]]; then
    curl -sSL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github.v3+json" \
        -X POST -d '{"body": "Building in currentBuild.absoluteUrl (GH API TEST)"}' "${PR_COMMENTS_URL}" | yq -r '.html_url'
fi

然后,您可以将此脚本包装到Jenkins groovy/bash块中,并传入currentBuild。从运行的构建到GH拉取请求的absoluteUrl。

使用gh cli的等效代码:

# 0. install gh CLI
sudo yum -y -q install https://github.com/cli/cli/releases/download/v2.20.2/gh_2.20.2_linux_amd64.rpm

# a. use gh to query a given repo for merged PRs for a given commitSHA; return the PR URL
PR_HTML_URL=$(gh pr list --repo ${ownerRepo} --state merged --json url --jq '.[].url' \
    --search $SHA)

# b. comment on the PR by URL: https://github.com/redhat-developer/devspaces/pull/848
if [[ $PR_HTML_URL ]]; then
    gh pr comment $PR_HTML_URL -b "Building in currentBuild.absoluteUrl (GH CLI TEST)"
fi

Jenkins管道代码示例:

https://gist.github.com/nickboldt/efb8d1b3a60c079e46b5b7aab4412e22#file-commentonpr-fragment-jenkinsfile

你可以去GitHub,在搜索栏中输入SHA,确保你选择了左边的“问题”链接。

2017年7月13日更新

通过GitHub UI,现在有一个非常简单的方法来做到这一点。如果您正在UI分支中的提交列表中查看一个提交,请单击指向该提交本身的链接。如果该提交有一个PR,并且它没有直接添加到分支,那么一个列出PR号和它进入的分支的PR链接将直接位于页面顶部的提交消息下面。


如果你只有提交SHA而没有其他的,并且不想去挖掘它,只需添加/commit/[commit SHA]到repo url,你就会看到提交页面,如果存在PR链接的话。 例如,SHA为52797a7a3b087231e4e391e11ea861569205aaf4, repo为https://github.com/glimmerjs/glimmer-vm,则登录https://github.com/glimmerjs/glimmer-vm/commit/52797a7a3b087231e4e391e11ea861569205aaf4

自2014年10月13日以来,这应该是直截了当的:

例如:

你可以看到,对于文件hakimel/reveal.js/plugin/markdown/markdown.js,我的贡献现在带有对它所产生的PR #734的引用。

这来自于从提交中链接合并的pull请求:

我们已经在提交页面中包含了包含分支和标记,以便为您提供有关更改的更多上下文。现在,存储库默认分支中的提交也会向您显示引入它们的拉请求。

在拉请求中,您可以看到关于为什么引入提交的讨论,并更清楚地了解更改的原因。 和往常一样,如果您知道提交SHA,您可以跳过提交页面并直接搜索拉请求。

将提交散列放入GitHub上的Pull Request filters字段。

我也遇到了同样的问题,并编写了pr_for_sha bash helper,文档如下:

http://joey.aghion.com/find-the-github-pull-request-for-a-commit/

像pr_for_sha <COMMIT>那样调用它,它将在浏览器中打开相应的github拉请求页面。