10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Github GraphQL APIでコミット数を取得する

Posted at

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したくないならコミットの一覧から自分で計算する。

10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?