Рекомендуемый способ перечисления всех репо / коммитов для данного пользователя с использованием github3.py
Я создаю приложение GitHub для извлечения информации о коммите из наших внутренних репозиториев. Я использую следующий код для перебора всех коммитов:
gh = login(token=gc.ACCESS_TOKEN)
for repo in gh.iter_repos():
for commit in repo.iter_commits():
print(commit.__dict__)
print(commit.additions)
print(commit.author)
print(commit.commit)
print(commit.committer)
print(commit.deletions)
print(commit.files)
print(commit.total)
Добавления / удаления / итоговые значения возвращаются как 0
и атрибут files всегда []. Когда я нажимаю на ссылку, я вижу, что это не так. Я подтвердил через curl
вызывает, что API действительно имеет запись этих атрибутов.
Читая больше в документации, кажется, что iter_commits
не рекомендуется в пользу iter_user_commits
, Может быть, это так, почему он не возвращает всю информацию о коммитах? Однако этот метод не возвращает мне никаких репозиториев, когда я использую его следующим образом:
gh = login(token=gc.ACCESS_TOKEN)
user = gh.user()
for repo in gh.iter_user_repos(user):
Короче говоря, мне интересно, каков рекомендуемый метод получения всех коммитов для всех репозиториев, к которым у пользователя есть доступ.
1 ответ
Там нет ничего плохого в iter_repos
с авторизованным GitHub
пример.
Вкратце вот что происходит (это описано в документации github3.py): при перечислении ресурса из API GitHub фактически возвращаются не все атрибуты. Если вам нужна вся информация, вы должны запросить информацию для каждого коммита. Короче говоря, ваш код должен выглядеть так:
gh = login(token=gc.ACCESS_TOKEN)
for repo in gh.iter_repos():
for commit in repo.iter_commits():
commit.refresh()
print(commit.additions)
print(commit.deletions)
# etc.