Освоение GitHub GraphQL API: получение коммитов из репозитория

В мире разработки программного обеспечения GitHub – это мощный инструмент для размещения проектов и совместной работы над ними. Для программного взаимодействия с GitHub вы можете использовать его API GraphQL. В этой статье блога мы рассмотрим различные методы получения коммитов из репозитория с помощью API GitHub GraphQL. Итак, пристегните ремни и вперед!

  1. Аутентификация с помощью токена личного доступа.
    Чтобы получить доступ к API GitHub, вам необходимо пройти аутентификацию. Создайте личный токен доступа в настройках своей учетной записи GitHub и включите его в качестве токена на предъявителя в заголовок авторизации ваших запросов GraphQL.

Пример:

import requests
headers = {
    "Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
response = requests.post(
    "https://api.github.com/graphql",
    json={"query": "YOUR_GRAPHQL_QUERY"},
    headers=headers
)
print(response.json())
  1. Получение информации о репозитории.
    Чтобы получить коммиты, нам сначала необходимо получить уникальный идентификатор репозитория. Чтобы получить эту информацию, вы можете запросить репозиторий по его владельцу и имени.

Пример:

query {
  repository(owner: "OWNER_NAME", name: "REPO_NAME") {
    id
  }
}
  1. Извлечение коммитов.
    После того как у вас есть идентификатор репозитория, вы можете получить список коммитов. Поле historyпредоставляет информацию, связанную с коммитом, например сообщение о коммите, автора, дату и т. д.

Пример:

query {
  repository(owner: "OWNER_NAME", name: "REPO_NAME") {
    defaultBranchRef {
      target {
        ... on Commit {
          history {
            nodes {
              message
              author {
                name
              }
              committedDate
            }
          }
        }
      }
    }
  }
}
  1. Ограничение количества коммитов.
    По умолчанию GitHub GraphQL API возвращает ограниченное количество коммитов. Вы можете использовать аргумент first, чтобы указать желаемое количество коммитов.

Пример:

query {
  repository(owner: "OWNER_NAME", name: "REPO_NAME") {
    defaultBranchRef {
      target {
        ... on Commit {
          history(first: 10) {
            nodes {
              message
              author {
                name
              }
              committedDate
            }
          }
        }
      }
    }
  }
}
  1. Разбиение на страницы для больших репозиториев:
    Для репозиториев с большим количеством коммитов ответ API будет разбит на страницы. Вы можете использовать аргумент afterдля получения последующих страниц коммитов.

Пример:

query {
  repository(owner: "OWNER_NAME", name: "REPO_NAME") {
    defaultBranchRef {
      target {
        ... on Commit {
          history(first: 10, after: "CURSOR") {
            pageInfo {
              endCursor
              hasNextPage
            }
            nodes {
              message
              author {
                name
              }
              committedDate
            }
          }
        }
      }
    }
  }
}

В этой статье мы рассмотрели несколько методов получения коммитов из репозитория с помощью API GitHub GraphQL. Мы рассмотрели аутентификацию, получение информации о репозитории, получение коммитов, ограничение количества коммитов и нумерацию страниц для больших репозиториев. Используя возможности GraphQL и API GitHub, вы можете создавать мощные приложения и получать глубокую информацию о своих репозиториях.

Не забывайте обрабатывать ошибки, ограничивать скорость и обеспечивать правильную обработку ошибок в коде. Приятного кодирования!