获取提交的电子邮件

时间:2015-08-06 15:55:35

标签: email github-api git-commit github3.py

我正在尝试将项目提交者的电子邮件地址提供给特定文件。在创建一个查找匹配特定条件的repos列表中的代码文件的查询后,我以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,即使文档说提交包含提交者的电子邮件。我也尝试过作者而不是提交者,因为文档说作者是包含电子邮件的词典,但我不确定dict键是什么。

谢谢!

1 个答案:

答案 0 :(得分:1)

许多返回列表的GitHub端点仅返回列表中的部分对象。真的,提交者或作者永远都是无,这很奇怪,但你可以尝试做:

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帐户的this commit。也就是说,我可以检查commit.commit以获取有关git commit对象本身的原始数据。这有一个committerauthor对象,请参阅

>>> 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'}