建议使用github3.py列出给定用户的所有repos / commit的方法

时间:2017-03-15 15:44:54

标签: 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,文件属性始终为[]。当我点击网址时,我可以看到情况并非如此。我已经通过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 个答案:

答案 0 :(得分:1)

登录iter_repos实例GitHub没有任何问题。

简而言之,这就是正在发生的事情(这在github3.py的文档中有描述):当从GitHub的API列出资源时,并不是所有的属性都被实际返回。如果您需要所有信息,则必须为每个提交请求信息。简而言之,您的代码应如下所示:

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.