使用GitHub API(v3)我想知道提交出现在哪些分支上。我没有找到通过repo提交或提交数据对象直接查询它的方法。另一种解决方案是列出所有分支,并与其HEAD进行比较;我想如果提交不在给定分支上,则比较将失败。
这是否通过当前的API支持,我只是错过了它?如果没有,你有(更好的)解决方法吗?
答案 0 :(得分:15)
直接通过GitHub API无法实现。
每个分支compare the branch with the SHA:
https://api.github.com/repos/:user/:repo/compare/:branch...:sha_of_commit
如果响应中status
属性的值为diverged
或ahead
,则提交不在分支中。如果status
属性的值为behind
或identical
,则提交位于分支中。
答案 1 :(得分:1)
我还没有检查GitHub API是否直接支持这一点,但使用普通Git这是微不足道的:
git branch --all --contains <commit>
这将列出包含给定提交的本地存储库中的所有分支(本地和远程)。
答案 2 :(得分:0)
关注Ivan Zuzak's solution number 2,了解提交是否在分支上:
使用GitLab的repository compare API,并将从分支与提交
进行比较GET /projects/:id/repository/compare?from=<branch>&to=<sha_of_commit>
如果commits
列表为空,则为是,提交在该分支上。
在Python中,使用python-gitlab:
def is_commit_on_branch(project, commit, branch):
c = project.repository_compare(branch, commit)
return not c['commits']