github3.py.已提交文件的空列表



我正在开发一个使用一些Github信息的web服务。我需要得到一份提交后更改的文件列表。我找到了一份图书馆清单。我尝试了所有3个Java库和github3.py。所有这些库都会向我返回一个提交信息,其中包含受影响文件的empy列表(或者Java库的null)。获取受影响文件列表的代码非常简单,所以我不知道为什么会发生这种情况。

from github3 import login, repository

repo = repository('sigmavirus24', 'github3.py')
commits = repo.iter_commits()
for commit in commits:
    print len(commit.files) #prints 0

UPD:如何获取特定提交更改的文件列表?

在资源上迭代(在本例中为提交)时,GitHub API通常返回该资源的一个实例可用的信息的子集。使用您的代码,让我们尝试

from github3 import repository
commits = repository('sigmavirus24', 'github3.py').iter_commits()
c = next(commits)
print(len(c.files))  # => 0
print(c.refresh())  # => <Repository Commit [0eec5f6]>
print(len(c.files))  # => 1
print(c.files)
# [{u'status': u'modified', u'deletions': 0, ... }]

github3.py(在大多数对象上)提供了一个refresh方法,该方法将从API获取特定实例的完整数据。不幸的是,这将导致比您希望的更多的API调用。对一些人来说,一种常见的模式是进行

r = repository('sigmavirus24', 'github3.py')
cs = r.iter_commits(50)  # Limit it to 50 commits
commits = [c.refresh() for c in cs]

在这种情况下,您正进行51个API调用,1个用于列出前50个提交,50个用于从API获取每个提交的所有数据。

我不确定Java包装器是否提供任何类似的功能

相关内容

  • 没有找到相关文章

最新更新