Получение писем коммиттеров

Я пытаюсь получить адреса электронной почты коммиттеров проекта в определенных файлах. После создания запроса, который находит файлы кода в списке репозиториев, соответствующих определенным критериям, я получаю правильные результаты в виде code_results (типа CodeSearchResult). Теперь, чтобы попытаться получить доступ к информации о коммите, я делаю следующее

for code_result in code_results:
            repository = code_result.repository
            file_path = code_result.path
            commits = repository.commits(path=file_path)
            for commit in commits:
                if commit.committer is not None:
                    print commit.committer

Проблема заключается в том, что при попытке получить электронную почту через commit.committer.email всегда возвращается None, хотя в документации говорится, что коммит содержит электронную почту коммиттера. Я также попробовал автора вместо коммиттера, так как в документации говорится, что автор - это диктат, содержащий электронную почту, но я не уверен, что это за ключи.

Спасибо!

1 ответ

Решение

Многие из конечных точек GitHub, которые возвращают списки, возвращают только частичные объекты в листинге. Странно, что коммиттером или автором никогда не будет None, если честно, но вы можете попробовать сделать:

for commit in commits:
    commit = commit.refresh()
    if commit.committer is not None:
        print commit.committer

Тем не менее, тестируя это на github3.py, я не могу воспроизвести эту проблему. я сделал

repository = github3.repository('sigmavirus24', 'github3.py')
for commit in repository.commits(path='setup.py'):
     print(commit.committer)
     print(commit.author)

И за исключением одного коммита, оба присутствовали всегда. Это было из этого коммита, где у пользователя не было учетной записи GitHub. Тем не менее, я могу затем проверить commit.commit чтобы получить необработанные данные о самом объекте git commit. Это имеет как committer а также author объект, см

>>> commit.commit.committer
{u'date': u'2013-09-05T02:23:17Z', u'name': u'Barry Morrison and Ian Cordasco', u'email': u'graffatcolmingov+bmorriso@gmail.com'}
>>> commit.commit.author
{u'date': u'2013-09-05T02:23:17Z', u'name': u'Barry Morrison and Ian Cordasco', u'email': u'graffatcolmingov+bmorriso@gmail.com'}
Другие вопросы по тегам