我正在尝试使用 github api(通过 githubothttps://github.com/iangreenleaf/githubot https://github.com/iangreenleaf/githubot) 从拉取请求编号获取拉取请求合并提交 sha。
我能够得到正确的响应(例如“获取单个拉取请求”:https://developer.github.com/v3/pulls/ https://developer.github.com/v3/pulls/)但是 merge_commit_sha 给了我这个错误:
fatal: bad object 304fc816f33f808080c9c87895eea2d66081d373
当我比较 github 上的两个页面时,我看到了提交页面中的 merge_commit_sha,但我看到了拉取请求合并页面中不同的提交 sha。两个父级相同,但合并提交不同。从 api 调用返回的一个不起作用,但另一个让我通过以下方式恢复拉取请求提交
git revert -m 1 commit_sha
Here are some example screen shots
所以这让我想到了两个问题:
- 这 2 个提交 sha 之间有什么区别?为什么只有一个可以恢复拉取请求?
- 如何使用 github api 获取合并拉取请求提交 sha?
Thanks.
GitHub 有已弃用 https://developer.github.com/changes/2013-04-25-deprecating-merge-commit-sha/ the merge_commit_sha
属性,因为它令人困惑。正如他们所描述的here https://developer.github.com/v3/pulls/#mergability:
The merge_commit_sha attribute holds the SHA of the test merge commit
这意味着 GitHub 创建一个特殊的分支,在其中合并 master 和您的拉取请求分支,并且merge_commit_sha
指向该代理合并提交,但是您的本地存储库中没有它。你必须去拿特殊的pull/<pull_request_id>/merge
分支以查看该提交。
好的是你可以做到这一点before合并拉取请求。还有像这样的工具Jenkins GitHub 拉取请求生成器 https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin利用这项技术。同时commit_sha
是实际的合并提交,这就是您能够恢复它的原因。
所以,如果还是不清楚,merge_commit_sha
does给你正确的提交sha,但是要使用它你必须获取pull/<pull_request_id>/merge
先分行。为了避免将来出现弃用的问题,您可以获取上述合并分支的头提交,而不是使用merge_commit_sha
.
顺便说一句,如果您正在使用 Hubot 构建一些东西,您可能需要查看一下这本书 https://leanpub.com/automation-and-monitoring-with-hubot(无耻的插头)。它包括有关 GitHub 集成的一章。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)