【问题标题】:Getting committer emails获取提交者电子邮件
【发布时间】:2015-08-08 00:06:35
【问题描述】:

我正在尝试将项目提交者的电子邮件地址获取到特定文件。在创建一个在与特定条件匹配的 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 即使文档说提交包含提交者的电子邮件。我也尝试了作者而不是提交者,因为文档说作者是包含电子邮件的字典,但我不确定字典键是什么。

谢谢!

【问题讨论】:

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


    【解决方案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)
    

    除了一个提交之外,两者都始终存在。那是来自this commit,用户没有 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'}
    

    【讨论】:

    • 感谢您的回答.. 检查 None 是因为(类似于那个提交案例),有一些提交者或作者为 None 这就是为什么我必须进行此检查。但是,我的问题实际上是关于获取电子邮件地址的。当您执行 commit.committer.email 时,这是我发现 always 为 None 的一个字段
    • 您可以随时从commit.commit.committer['email'] 获得它。如果您不想这样做,那么如果用户有公共电子邮件地址,则调用 commit.committer.refresh() 应该可以解决问题。
    • 谢谢!两种方式都可以,并为我提供我想要的信息。
    猜你喜欢
    • 2017-05-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    相关资源
    最近更新 更多