Using the GitHub API (v3) I\'d like to figure out which branches a commit appears on. I didn\'t find a way to directly query this, either through repo commits or the commit
Following Ivan Zuzak's solution number 2, to know if a commit is on a branch:
Use GitLab's repository compare API, and compare from the branch, to the commit
GET /projects/:id/repository/compare?from=<branch>&to=<sha_of_commit>
If the commits list is empty, then yes, the commit is on that branch.
In Python, using python-gitlab:
def is_commit_on_branch(project, commit, branch):
c = project.repository_compare(branch, commit)
return not c['commits']
That's not possible directly via the GitHub API.
for each branch, compare the branch with the SHA:
https://api.github.com/repos/:user/:repo/compare/:branch...:sha_of_commit
If the value of the status attribute in the response is diverged or ahead, then the commit is not in the branch. If the value of the status attribute is behind or identical, then the commit is in the branch.
I haven't checked if this is directly supported by the GitHub API, but this is trivial to do using plain Git:
git branch --all --contains <commit>
That will list all branches (local and remote) in a local repository that contain the given commit.