# 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
# 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
8条答案
按热度按时间zengzsys1#
你可以直接进入GitHub,在搜索栏中输入SHA,确保你选择了左边的“问题”链接。
更新日期:2017年7月13日
通过GitHub的用户界面,现在有一个非常简单的方法来完成这个任务。如果你在用户界面的分支提交列表中看到一个提交,点击提交本身的链接。如果该提交有一个PR,并且没有直接添加到分支中,页面顶部的提交消息下方将直接显示一个指向PR的链接,其中列出了PR编号及其进入的分支。
如果你有提交SHA,没有其他东西,并且不想去挖掘它,只要把
/commit/[commit SHA]
添加到repo url,你就会看到提交页面,如果存在PR链接的话。dba5bblo2#
中 的 每 一 个
如 有 必要 , 将
origin
改为 指向 GitHub 仓库 的 remote 的 名称 , 该 仓库 是 pull 请求 要 发送 到 的 仓库 。 对于 任何 给定 的 remote , 第 一 个 命令 只 需要 运行 一 次 , 第 二 个 命令 通常 在 获取 其他 更新 时 执行 。这 将 导致 git 获取 关于 拉 取 请求 的 信息 以及 实际 的 分支 。 它们 将 显示 为 远程 跟踪 分支 , 如
origin/pull/123
。 完成 后 , 您 可以 使用git describe
和--all
和--contains
选项 来 显示 第 一 个 引用 提交 的 分支 。但是 , 如果 您 要 查找 的 提交 实际 上 是 拉 取 请求 中 提交 的 修改 版本 , 例如 更改 被 重新 基于 其他 工作 , 或者 执行 合并 的 人员 决定 进行 一些 更改 , 则 此 操作 将 不 起 作用 。
628mspwn3#
自 2014 年 10 月 13 日 起 , 这 一 点 应该 很 简单 :
例如 :
您 可以 看到 , 对于 文件
hakimel/reveal.js/plugin/markdown/markdown.js
, my contribution 现在 附带 了 对 它 所 创建 的 PR #734 的 引用 。这 来自 * * Linking merged pull requests from commits * * :
我们 已经 including the containing branches and tags on commit pages 给 了 你 更多 关于 修改 的 上下文 。 现在 , 仓库 默认 分支 中 的 提交 也 会 显示 引入 它们 的 拉 取 请求 。
在 拉 取 请求 中 , 您 可以 看到 关于 为什么 引入 提交 的 讨论 , 并 更 清楚 地 了解 更改 的 原因 。
和 往常 一样 , 如果 你 知道 提交 SHA , 你 可以 跳过 提交 页面 和 search for the pull request directly 。
bn31dyow4#
将提交哈希值放入GitHub上的Pull Request filters字段。
sdnqo3pr5#
您也可以使用gh cli来执行此操作,以下是一个示例:
有关详细信息,请参见-https://cli.github.com/manual/gh_pr_list
5lwkijsr6#
我遇到了同样的问题,并编写了pr_for_sha bash helper,记录如下:
http://joey.aghion.com/find-the-github-pull-request-for-a-commit/
像
pr_for_sha <COMMIT>
那样调用它,它将在浏览器中打开相应的github pull请求页面。ctrmrzij7#
我是GitHub web UI上的一个小链接的重度用户,但我希望有一个更快的方法,可以直接从终端到达那里,基本上是一个
git pr SHA
命令。这花了一点时间,但这里有一系列的git别名,可以在MacOS上为你设置:如果你使用的是Linux,用
xdg-open
代替open
,你就成功了。请注意,只有当你练习GitHub流程并创建显式合并提交时,这才有效。
我已经在这里写了一个更详细的解释,说明这一切是如何工作的:https://tekin.co.uk/2020/06/jump-from-a-git-commit-to-the-pr-in-one-command
ergxz8rk8#
我想要类似的东西来为一个给定的提交找到一个PR,然后用Jenkins build info对PR进行注解。
然后,您可以将此脚本 Package 在Jenkins groovy/bash块中,并将
currentBuild.absoluteUrl
从正在运行的构建传递到GH拉取请求。使用gh cli的等效代码:
Jenkins管道代码示例:
https://gist.github.com/nickboldt/efb8d1b3a60c079e46b5b7aab4412e22#file-commentonpr-fragment-jenkinsfile