使用 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.
我正在构建一个 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.