Как получить все коммит-сообщения вместе с идентификатором пользователя и патчами для всех репозиториев для организации на GitHub, используя GraphQL - PullRequest
0 голосов
/ 05 ноября 2018

Мне нужно найти все сообщения коммита и соответствующие патчи кода с использованием GraphQL. Сделать это из Rest API v3 было очень легко, однако я не совсем понимаю, как обойти GitHub в GraphQL API v4 . Я начал с GraphQL всего пару дней назад. Документы GitHub кажутся очень загадочными. Особенно implements, nodes и edges, target и GitObjects, pagination и cursor.
Пока у меня есть следующее, но вместо того, чтобы дать мне список коммитов для всех репо, я получаю один коммит для определенного количества репо -

Запрос:

query list_commits ($repo: String!){
  rateLimit{
    cost
    remaining
  }

  organization(login: $repo){
    repositories(first: 30) {
      edges{
        node{
          defaultBranchRef{
            repository{
              name
            }
            target {
              ... on Commit{
                message
              }
            }
          }
        }
      }
    }
  }
}

Переменная запроса:

{
  "repo": "elastic"
}

Часть ответа:

{
  "data": {
    "rateLimit": {
      "cost": 1,
      "remaining": 4999
    },
    "organization": {
      "repositories": {
        "edges": [
          {
            "node": {
              "defaultBranchRef": {
                "repository": {
                  "name": "elasticsearch"
                },
                "target": {
                  "message": "Small corrections to HLRC doc for _termvectors (#35221)\n\nRelates to #33447"
                }
              }
            }
          },
          {
            "node": {
              "defaultBranchRef": {
                "repository": {
                  "name": "elasticsearch-servicewrapper"
                },
                "target": {
                  "message": "Update README.md"
                }
              }
            }
          },
          {
            "node": {
              "defaultBranchRef": {
                "repository": {
                  "name": "elasticsearch-net"
                },
                "target": {
                  "message": "Update Projects static initializing even further, unit tests all pass now"
                }
              }
            }
          },

Я согласен с тем, что сначала делаю небольшие шаги, например, получаю все коммиты для одного репозитория, а затем расширяю его для всех репо в организации.

...