我正在构建一个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):
简而言之,我想知道推荐的方法是什么,以获取用户有权访问的所有存储库的所有提交。
答案 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.