使用 github3.py 为给定用户列出所有 repos/commits 的推荐方法

Recommended way to list all repos/commits for a given user using 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)

additions/deletions/total 值都返回为 0,文件属性始终为 []。当我点击 url 时,我发现情况并非如此。我已经通过 curl 调用验证 API 确实有这些属性的记录。

在文档中阅读更多内容,似乎 iter_commits 已被弃用,而 iter_user_commits 已被弃用。这可能是为什么它没有 returning 关于提交的所有信息的原因吗?但是,当我像这样使用它时,这种方法对我来说 return 没有任何存储库:

gh = login(token=gc.ACCESS_TOKEN)
user = gh.user()
for repo in gh.iter_user_repos(user):

简而言之,我想知道推荐的方法是获取用户有权访问的所有存储库的所有提交。

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

简而言之,这是正在发生的事情(这在 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.