GitHub: получить количество измененных файлов в хранилище за диапазон дат - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь получить количество файлов, которые были изменены за указанный диапазон дат (ежемесячный отчет).

Я могу довольно легко получить число коммитов с помощью API GitHub V4. Я изменил этот запрос, чтобы также получить количество измененных файлов в каждом коммите, и решил, что смогу объединить их вручную. Это работает с небольшими объемами. Для справки вот запрос, который я использую:

query ($owner: String!, $name: String!, $pagedEndCursor: String, $sinceTS: GitTimestamp!, $untilTS: GitTimestamp!) {
  repository(owner: $owner, name: $name) {
    refs(first: 100, refPrefix: "refs/heads/", after: $pagedEndCursor, orderBy: {field: TAG_COMMIT_DATE, direction: DESC}) {
      totalCount
      edges {
        node {
          name
          target {
            ... on Commit {
              history(first: 100, since: $sinceTS, until: $untilTS) {
                totalCount
                nodes {
                  changedFiles
                  committedDate
                }
                pageInfo{
                  hasNextPage
                }
              }
            }
          }
        }
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
}

Проблема, с которой я сталкиваюсь, состоит в том, что наши команды широко используют ветки, поэтому у нас есть много репозиториев, имеющих более 100 веток, поэтому я построил разбиение на страницы при обходе ветвей. Хотя вероятность того, что 100 ветвей имеют коммиты в течение определенного месяца, невелика, вполне возможно, что один ветвь может иметь более 100 коммитов в данный месяц.

Я подумал сделать подкачку в истории (я оставил самый внутренний pageInfo, чтобы показать где), но я не думаю, что это сработает, чтобы пролистать несколько внутренних объектов.

Я мог бы сделать это за несколько проходов, где я запустил запрос, чтобы получить список ветвей, которые изменились за данный месяц, а затем запустил отдельный запрос для каждой из этих ветвей, чтобы получить измененное число файлов, но это кажется, что победить цель использования GraphQL.

Существуют ли другие способы получения измененного числа файлов для диапазона дат во всех ветвях хранилища?

...