2017-03-15 28 views
0

我正在構建一個GitHub應用程序以從我們的內部回購庫中提取提交信息。我使用下面的代碼來遍歷所有提交:建議使用github3.py列出給定用戶的所有回購/提交的方法

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): 

總之,我想知道,推薦的方法是讓所有提交的所有存儲庫用戶訪問了什麼。

回答

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. 
+0

啊,錯過了'refresh'方法。謝謝! – flybonzai

相關問題