🤖
[gh コマンド] PR のcommit hashをすべて取得する
TL;DR
gh api graphql -f query='
query($owner: String!, $repo: String!, $pr: Int!, $endCursor: String) {
repository(owner: $owner, name: $repo) {
pullRequest(number: $pr) {
commits(first: 100, after: $endCursor) {
pageInfo{ hasNextPage, endCursor }
nodes {
commit {
oid
}
}
}
}
}
}' -F owner='{owner}' -F repo='{repo}' -F pr=<PR_NUMBER> --paginate --jq '.data.repository.pullRequest.commits.nodes.[].commit.oid'
解説
gh pr view <PR_NUMBER> --json commits --jq .commits[].oid
という方法もあるのだが、現状では下記のissueにもある通り、最大100件(古い順)しか取得することができない。
そのため、「100件を超えるcommitが積まれたPRの最新のcommit hashを取得したい」といったケースでは困ってしまう。そこで、api graphql
というサブコマンドを利用して、直接GraphQLのクエリを指定してデータを取得する。
参考
Discussion