version
Github GraphQl API v4 (doc: https://developer.github.com/v4/)
とりあえずガイドを読むと動きがわかる: https://developer.github.com/v4/guides/
また試すときは https://developer.github.com/v4/explorer/ で実行する
あるRepositoryに対する総コミット数の取得
query ($owner:String!, $name:String!, $since:GitTimestamp!, $until:GitTimestamp!) {
repository(owner: $owner, name: $name) {
nameWithOwner
defaultBranchRef {
name,
target {
... on Commit {
history(since: $since, until: $until) {
totalCount # そのブランチに対する総コミット数
}
}
}
}
}
}
variables {
"owner": "username", # githubアカウント名
"name": "project", # project名
"since": "2019-08-01T00:00:00",
"until": "2019-08-02T00:00:00"
}
Repositoryに注目するとあるブランチ(ここではデフォルトブランチ)の総コミット数を取得することができる。このときsince/untilを指定することで日付の範囲指定が可能(ISO-8601形式: https://developer.github.com/v4/scalar/gittimestamp/ )。
あるUserが行った総コミット数の取得
query ($name: String!, $from: DateTime!, $to: DateTime!) {
user(login: $name) {
name
email
contributionsCollection(from: $from, to: $to) {
totalRepositoryContributions # コミットしたレポジトリの数
totalCommitContributions # コミットした全レポジトリに対する総コミット数
commitContributionsByRepository { # レポジトリ毎の情報
repository {
nameWithOwner
}
contributions {
totalCount
}
}
}
}
}
variables {
"name": "username", # githubアカウント名
"from":"2019-08-01T00:00:00",
"to":"2019-09-01T00:00:00"
}
Repositoryではなくuserに注目すると、contributionsCollectionを辿ることでそのuserが行ったコミット数の情報が取得できる (https://developer.github.com/v4/object/contributionscollection/ )。
このときの日付の範囲指定はsince/untilではなくfrom/toで指定する(実は型が違うがこれもISO-8601形式: https://developer.github.com/v4/scalar/datetime/ )。
git shortlog的な情報は取得できない
documentを探してみたが、git shortlogで取得できるような情報("あるrepositoryに対するuser毎のコミット数の一覧")に対応するAPIはない模様。どうしてもcloneしたくないならコミットの一覧から自分で計算する。