2013-08-09 14 views
5

Tôi đang sử dụng GitHub API Gem và cố gắng get statistics about contributors's additions, deletions, and commit counts. Vấn đề là tôi chỉ nhận được 100 kết quả và không thể truy cập vào các trang khác. Nó có vẻ là câu hỏi rất phổ biến nhưng tôi không thể tìm thấy câu trả lời.Làm thế nào tôi có thể nhận được hơn 100 kết quả từ GitHub API v3 sử dụng đá quý "github_api"?

Ví dụ: hãy xem xét đường ray/đường ray repo. Có 1 990 cộng tác viên:

repo = Github::Repos.new user: 'rails', repo: 'rails' 
    repo.stats.contributors 

Tôi nhận được 100 kết quả đầu tiên.

Tôi đã cố truy vấn thông tin phân trang được bao gồm trong tiêu đề liên kết. Đầu ra của tôi trong bảng điều khiển đường ray:

irb(main):001:0> repo = Github::Repos.new 
=> #<Github::Repos:0xa6941dc *@current_options ommited* > 

irb(main):002:0> res = repo.stats.contributors user: 'rails', repo: 'rails' 
=> #<Github::ResponseWrapper *@body omitted* > 

irb(main):003:0> res.links 
=> #<Github::PageLinks:0xa2a966c @next=nil, @last=nil> 

Không có gì.

Chuyển tùy chọn auto_pagination không thay đổi bất kỳ điều gì cho tôi.

Tôi đang thiếu gì?

Trả lời

8

Tôi đã thử nhiều thứ và kết thúc với các phương thức HTTP API GitHub cơ bản. Ví dụ:

curl https://api.github.com/repos/rails/rails/stats/contributors 

Không có gì. Vì vậy, tôi đã bỏ một e-mail để hỗ trợ GitHub. Đây là câu trả lời từ Wynn Netherland:

Cảm ơn bạn đã liên hệ. Phương thức cụ thể đó không hỗ trợ việc phân trang , vì vậy, chúng tôi đang giới thiệu hiệu quả dữ liệu cộng tác viên theo số 100 như bạn đã khám phá. Tôi không thể hứa nếu/khi chúng tôi có thể hiển thị thêm nhiều dữ liệu hơn vì đó là loại điểm cuối đắt đỏ đối với chúng tôi. Theo dõi tài liệu dành cho nhà phát triển API để biết các cập nhật.

Cảm ơn Wynn. Vì vậy, GitHub Repo Statistics API không hỗ trợ phân trang. Không có cách nào để có được danh sách cộng tác viên với hơn 100 kết quả.

1

tôi không chắc chắn những gì bạn có nghĩa là bằng cách đi qua trong các tùy chọn auto_pagination vì đó dường như là cái gì đó là cấu hình khi tạo một GitHub dụ mới, ví dụ như,

github = GitHub.new do |config| 
    config.auto_pagination = true 
end 
github.repos.contributors 'rails', 'rails' 

Thẳng thắn mà nói, mặc dù tôi sẽ đề nghị sử dụng chính thức Đá quý API GitHub - octokit.rb. Công cụ phân trang cho bạn và thông minh biết khi nào nó có thể làm tăng số lượng mục trên mỗi trang đến 100.

+0

Cảm ơn bạn đã trả lời! Vâng, tùy chọn 'auto_pagination' là một bước cấu hình. Tùy thuộc vào giai đoạn nào chúng tôi vượt qua 'auto_pagination', nó sẽ ảnh hưởng đến tất cả hoặc chỉ một yêu cầu duy nhất.Tôi đã cố gắng thêm nó khi tạo một thể hiện 'Github' mới, chuyển nó trong phần' Github :: Repos' của API và một yêu cầu duy nhất. Nó không hiệu quả với tôi. Tôi biết về Octokit. Nhưng GitHub API Gem dường như có tài liệu tốt hơn. –

+0

Tôi không đồng ý về các tài liệu tốt hơn một cách thẳng thắn, nhưng tôi không phải chủ yếu là một nhà phát triển ruby. Tôi chắc rằng cũng có một thẻ octokit ở đây nếu bạn có câu hỏi. Họ trả lời họ khá nhanh chóng –

+0

ok. Cảm ơn bạn. Tôi sẽ thử nó. –

0

vấn đề Đối mặt cùng, giải pháp của tôi là để rơi trở lại để git dòng lệnh:

Đếm cam kết:

$ git log --author="X Y" --oneline --shortstat|wc -l 
224 

đồng bằng châu thổ Count:

$ git log --author="X Y" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' - 

thêm dòng: 1861, loại bỏ dòng : 1243, tổng số dòng: 618

Các vấn đề liên quan