0

我正在构建一个 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,并且文件属性始终为 []。当我单击 url 时,我可以看到情况并非如此。我已经通过curl调用验证了 AP​​I 确实有这些属性的记录。

在文档中阅读更多内容,似乎iter_commits不赞成使用iter_user_commits. 这可能是为什么它没有返回有关提交的所有信息的情况吗?但是,当我像这样使用此方法时,它不会为我返回任何存储库:

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

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

4

1 回答 1

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.
于 2017-03-16T12:04:07.093 回答