2014-09-13 45 views
1

我正在开发一个使用一些Github信息的Web服务。我需要获得一个文件列表,这些文件是通过提交进行更改的。我发现了一个list of libraries。我尝试了所有3个Java库和github3.py。所有这些库都会向我返回一个提交信息,其中包含受影响文件的empy列表(或用于Java库的null)。获取受影响文件列表的代码非常简单,所以我不知道为什么会发生。github3.py。提交文件的空目录

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:我怎样才能提交由特定改变的文件列表?

+0

那么到底什么是你的问题? – MattDMo 2014-09-13 01:23:24

+0

@MattDMo对不起。更新 – 2014-09-13 01:25:58

回答

1

在迭代资源时(在本例中为commit),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包装是否提供任何类似的功能

相关问题