Github api: Как эффективно найти количество коммитов для репозитория?

Я хочу найти количество коммитов, сделанных для конкретных проектов github, и внутри них для определенных файлов. Я проверил github api docs, но нашел только API для фактического возврата всех коммитов. Это было бы очень неэффективно, так как я должен выполнять несколько вызовов api для подкачки через все коммиты.

У кого-то есть лучшая идея?

Ответ 1

Обновление в мае 2013 года: см. Файл CRUD и статистика хранилища теперь доступны в API"

Теперь вы можете Получить последний год данных активности фиксации

GET /repos/:owner/:repo/stats/commit_activity

Возвращает последний год активности фиксации, сгруппированный по неделям. Массив дней - это группа коммитов в день, начиная с воскресенья.

Не совсем то, что вы ищете, но ближе.


Оригинальный ответ (апрель 2010 г.)

Нет, текущий API не поддерживает 'log --all' для перечисления всех коммитов из всех ветвей.

Единственная альтернатива представлена ​​в "API Github: извлечение всех коммитов для всех веток для репо" и список через все страницы всех коммитов, ответвление после ветки.

Это кажется настолько громоздким, что другая альтернатива фактически клонирует репозиторий Github и применяет команды git к этому локальному клону!
(главным образом git shortlog)

Ответ 2

С GraphQL API v4 вы можете получить общее количество сбоев за каждую ветку с помощью totalCount для каждой ветки:

{
  repository(owner: "google", name: "gson") {
    name
    refs(first: 100, refPrefix: "refs/heads/") {
      edges {
        node {
          name
          target {
            ... on Commit {
              id
              history(first: 0) {
                totalCount
              }
            }
          }
        }
      }
    }
  }
}

Проверьте его в проводнике