2013-07-02 28 views
12

Tôi muốn lấy danh sách tất cả yêu cầu kéo trên repo thông qua API github. Tôi đã làm theo các hướng dẫn tại http://developer.github.com/v3/pulls/ nhưng khi tôi truy vấn '/ repos /: owner /: repo/pulls' các yêu cầu kéo ít nhất liên tục quay trở lại của nó được hiển thị trên trang web.Làm cách nào để có danh sách tất cả yêu cầu kéo cho repo thông qua API github?

Ví dụ: khi tôi truy vấn torvalds/linux repo, tôi nhận được 9 yêu cầu kéo mở (có 14 yêu cầu trên trang web). Nếu tôi thêm '? State = closed', tôi nhận được một bộ 11 yêu cầu kéo đóng khác (trang web hiển thị khoảng 20).

Có ai biết sự khác biệt này phát sinh không và liệu có cách nào để có danh sách đầy đủ các yêu cầu kéo cho repo thông qua API không?

+0

Bạn có thể kiểm tra lại không? Thử nghiệm, dự kiến ​​19, có 19 – random

Trả lời

1

Có cách để có danh sách đầy đủ và bạn đang thực hiện. Bạn đang sử dụng gì để giao tiếp với API? Tôi nghi ngờ bạn có thể không làm điều gì đó một cách chính xác. Ví dụ (hiện tại chỉ có 13 yêu cầu kéo mở) bằng cách sử dụng trình bao bọc API của tôi (github3.py) Tôi nhận được tất cả các yêu cầu kéo mở. Một ví dụ về làm thế nào để làm điều đó mà không cần bao bọc tôi trong python là:

import requests 
r = requests.get('https://api.github.com/repos/torvalds/linux/pulls') 
len(r.json()) == 13 

và tôi cũng có thể nhận được kết quả đó (mơ hồ) trong cURL bằng cách đếm các kết quả bản thân mình: curl https://api.github.com/repos/torvalds/linux/pulls.

Nếu bạn, tuy nhiên, chạy vào một kho lưu trữ với hơn 25 (hoặc 30) yêu cầu kéo đó là một vấn đề hoàn toàn khác nhau nhưng chắc chắn nó không phải là những gì bạn đang gặp phải bây giờ.

+0

Có cách nào để nhận được hơn 30 yêu cầu kéo cho repo không? Có thể trong các yêu cầu mạng khác nhau? – shreyj

+0

@shreyj nhiều điểm cuối trên API GitHub được phân trang và có thể được truy cập bằng cách sử dụng [Tiêu đề liên kết] (http://developer.github.com/v3/#pagination) về phản hồi. Nếu bạn đang cố gắng sử dụng python hoặc ruby ​​để thực hiện yêu cầu, tôi chắc chắn có thể giúp bạn nhiều hơn với điều đó. –

3
  1. Nếu bạn muốn truy xuất tất cả yêu cầu kéo (cam kết, nhận xét, sự cố, v.v), bạn phải sử dụng phân trang. https://developer.github.com/v3/#pagination

  2. Yêu cầu GET "kéo" sẽ chỉ trả về yêu cầu kéo mở.

  3. Nếu bạn muốn nhận tất cả yêu cầu kéo, bạn có thể đặt trạng thái thông số thành tất cả hoặc bạn sử dụng sự cố.

thêm thông tin

Nếu bạn cần dữ liệu khác từ Github, chẳng hạn như các vấn đề, sau đó bạn có thể xác định kéo yêu cầu từ vấn đề này, và sau đó bạn có thể lấy từng kéo yêu cầu không có vấn đề nếu nó được đóng hoặc mở. Nó cũng sẽ cung cấp cho bạn một vài thuộc tính hơn (sáp nhập, hợp nhất, hợp nhất-cam-sha, nr của cam kết, v.v ..) Nếu một vấn đề là yêu cầu kéo, thì nó sẽ chứa thuộc tính đó. Nếu không, nó chỉ là một vấn đề.

Từ API:https://developer.github.com/v3/pulls/#labels-assignees-and-milestones

"Mỗi yêu cầu kéo là một vấn đề, nhưng không phải mọi vấn đề là một yêu cầu kéo Vì lý do này,.‘Chia sẻ’hành động cho cả tính năng, như thao tác nhận chuyển nhượng, nhãn và các mốc quan trọng, được cung cấp trong API vấn đề. "

Sửa Tôi chỉ phát hiện ra rằng các vấn đề cư xử tương tự như kéo-yêu cầu, vì vậy người ta sẽ cần phải làm lấy tất cả bằng cách thiết lập các thông số trạng thái cho tất cả

+0

bạn có thể vui lòng cung cấp mã để nhận được tất cả yêu cầu kéo (không phải trạng thái 'tất cả') –

+0

tha thứ cho tôi để hỏi, tôi chỉ thấy nó được cung cấp bởi @akshaynagpal –

3

Bạn có thể nhận tất cả yêu cầu kéo (đã đóng, mở, hợp nhất) thông qua biến số state.

Chỉ cần thiết lập state=all trong truy vấn GET, như this->

https://api.github.com/repos/:owner/:repo/pulls?state=all 

Để biết thêm thông: kiểm tra bảng thông số tại https://developer.github.com/v3/pulls/#list-pull-requests

+0

cách lọc ra chỉ số yêu cầu kéo từ kết quả thu được –

+0

Vấn đề của tôi là nếu tôi GET? State = all, nó cho một số nhỏ hơn? State = closed +? State = open – Akabelle

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