2014-09-13 43 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包裝是否提供任何類似的功能

相關問題