Как я могу получить последний коммит из GitHub API
Мне было интересно, какой лучший способ получить последнюю информацию о коммите из репозитория git с помощью GitHub API (Rest API v3).
Опция 1: GET /repos/:owner/:repo/commits/master
Могу ли я предположить, что объект 'commit' из ответа является последним коммитом от master-узла ветки?
Вариант 2: GET /repos/:owner/:repo/git/commits/5a2ff
Или сделайте вызовы, один, чтобы получить sha, получив ссылку HEAD от master, а затем получить информацию о коммите, используя возвращенный sha.
Спасибо за помощь
4 ответа
Это зависит от вашего определения "последний".
для данной ветви (как
master
),GET /repos/:owner/:repo/commits/master
действительно последний (самый последний) коммит.Но вы также можете рассмотреть последнее push-событие: оно будет представлять последний и последний сделанный коммит (в любой ветке), выдвинутый пользователем в это репо.
Другой способ получить последнюю фиксацию от пользователя - использовать следующую конечную точку
https://api.github.com/users/<username>/events/public
Если вам нужен только SHA1 последнего коммита определенной ветки, вот
curl
запрос, который сделает это:
curl -s -H "Authorization: token {your_github_access_token}" \
-H "Accept: application/vnd.github.VERSION.sha" \
"https://api.github.com/repos/{owner}/{repository_name}/commits/{branch_name}"
Вы также можете использовать Github GraphQL v4, чтобы получить последний коммит ветки по умолчанию:
{
repository(name: "linux", owner: "torvalds") {
defaultBranchRef {
target {
... on Commit {
history(first: 1) {
nodes {
message
committedDate
authoredDate
oid
author {
email
name
}
}
}
}
}
}
}
}
Или для всех веток:
{
repository(name: "material-ui", owner: "mui-org") {
refs(first: 100, refPrefix: "refs/heads/") {
edges {
node {
name
target {
... on Commit {
history(first: 1) {
nodes {
message
committedDate
authoredDate
oid
author {
email
name
}
}
}
}
}
}
}
}
}
}