Как получить коммиты репозитория GitHub вместе с измененными файлами и самими изменениями с помощью GraphQL

Я могу получить список совершает (с такими полями, как зафиксировать сообщения, Oid, зафиксировать URL и т. д.) Вместе с количеством changedFiles, сделанных в репозитории в ветке master. Однако я не могу понять, как получить любую информацию о самих изменениях и файлах, которые были изменены.

В v3 REST API информация об изменениях содержалась в files-> patch, а files-> raw_url или blob_url давали информацию о самом исходном файле на этом этапе.

Q) Как мне получить соответствующую информацию в версии 4 API GitHub с использованием GraphQL?

Запрос, с которым я застрял прямо сейчас (для краткости показан только 1 коммит) -

query {
  rateLimit{
    cost
    remaining
  }
  repository(owner: "elastic", name: "elasticsearch") {
    name
    defaultBranchRef {
      name
      target {
        ... on Commit {
          history(first:1){
            nodes{
              message
              changedFiles
              id
              oid
              treeUrl
              url
              tree{
                oid
              }
            }
            pageInfo{
              hasNextPage
              startCursor
              endCursor
            }
          }
        }
      }
    }
  }
}

Выход:

{
  "data": {
    "rateLimit": {
      "cost": 1,
      "remaining": 4999
    },
    "repository": {
      "name": "elasticsearch",
      "defaultBranchRef": {
        "name": "master",
        "target": {
          "history": {
            "nodes": [
              {
                "message": "Small corrections to HLRC doc for _termvectors (#35221)\n\nRelates to #33447",
                "changedFiles": 2,
                "id": "MDY6Q29tbWl0NTA3Nzc1OmEyYzIyYWQ3YWViMGY4ZDUxNDg2NzdkZDcyMjJhZDQzYWZlZTlhMTc = ",
                "oid": "a2c22ad7aeb0f8d5148677dd7222ad43afee9a17",
                "treeUrl": "https://github.com/elastic/elasticsearch/tree/a2c22ad7aeb0f8d5148677dd7222ad43afee9a17",
                "url": "https://github.com/elastic/elasticsearch/commit/a2c22ad7aeb0f8d5148677dd7222ad43afee9a17",
                "tree": {
                  "oid": "4f5f11e0e55aeafc4677800959232726a2cd787c"
                }
              }
            ],
            "pageInfo": {
              "hasNextPage": true,
              "startCursor": "a2c22ad7aeb0f8d5148677dd7222ad43afee9a17 0",
              "endCursor": "a2c22ad7aeb0f8d5148677dd7222ad43afee9a17 0"
            }
          }
        }
      }
    }
  }
}

К вашему сведению, OP опубликовал этот же вопрос на форуме сообщества GitHub в ноябре 2018 года, и представитель сказал, что на тот момент это было невозможно: github.community/t5/GitHub-API-Development-and/…

cody 19.02.2019 01:12

Кроме того, сам git явно исключен, поэтому я убрал git из тегов.

jthill 21.02.2019 19:25

Возможно, мне не хватает чего-то очевидного, но если GIthub API не может предоставить вам различия, почему бы просто не создать свой собственный сервер, который поддерживает свою собственную копию репо? Я только что понял, сколько лет этому вопросу. Я надеюсь, что в этих странах нет закона против некромантии.

Peaceful James 14.06.2020 16:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
15
3
899
0

Другие вопросы по теме