2013-07-02 7 views
12

मैं github एपीआई के माध्यम से एक रेपो पर सभी पुल अनुरोधों की एक सूची प्राप्त करना चाहता हूं। मैंने http://developer.github.com/v3/pulls/ पर दिए गए निर्देशों का पालन किया है, लेकिन जब मैं वेबसाइट पर प्रदर्शित होने के बजाय '/ repos /: owner /: repo/pulls' लगातार लगातार कम पुल अनुरोध पूछता हूं।मैं github एपीआई के माध्यम से रेपो के लिए सभी पुल अनुरोधों की सूची कैसे प्राप्त कर सकता हूं?

उदाहरण के लिए, जब मैं टोरवाल्ड/लिनक्स रेपो से पूछता हूं तो मुझे 9 खुले पुल अनुरोध प्राप्त होते हैं (वेबसाइट पर 14 हैं)। अगर मैं 'राज्य = बंद' जोड़ता हूं तो मुझे 11 बंद पुल अनुरोधों का एक अलग सेट मिलता है (वेबसाइट लगभग 20 दिखाती है)।

क्या कोई यह जानता है कि यह विसंगति उत्पन्न होती है, और यदि एपीआई के माध्यम से रेपो के लिए पुल अनुरोधों की पूरी सूची प्राप्त करने का कोई तरीका है?

+0

क्या आप फिर से जांच सकते हैं? 1 9 – random

उत्तर

1

एक पूरी सूची पाने का एक तरीका है और आप इसे कर रहे हैं। आप एपीआई के साथ संवाद करने के लिए क्या उपयोग कर रहे हैं? मुझे संदेह है कि आप कुछ सही तरीके से नहीं कर रहे हैं। उदाहरण के लिए (वर्तमान में केवल 13 खुले पुल अनुरोध हैं) मेरे एपीआई रैपर (github3.py) का उपयोग करके मुझे सभी खुले पुल अनुरोध मिलते हैं। कैसे अजगर में अपने आवरण के बिना यह करने के लिए एक उदाहरण है:

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

और मैं भी परिणाम अपने आप की गणना के द्वारा cURL में (अस्पष्ट) है कि परिणाम प्राप्त कर सकते हैं: curl https://api.github.com/repos/torvalds/linux/pulls

यदि आप 25 से अधिक (या 30) पुल अनुरोधों के साथ एक भंडार में भाग लेते हैं जो पूरी तरह से अलग मुद्दा है लेकिन निश्चित रूप से यह नहीं है कि आप अब क्या सामना कर रहे हैं।

+0

पर एक परीक्षण किया गया था, क्या रेपो के लिए 30 से अधिक पुल अनुरोध प्राप्त करने का कोई तरीका है? शायद विभिन्न नेटवर्क अनुरोधों में? – shreyj

+0

@shreyj गिटहब एपीआई पर कई अंतराल अंकगणित हैं और प्रतिक्रिया पर [लिंक शीर्षलेख] (http://developer.github.com/v3/#pagination) का उपयोग करके पहुंचा जा सकता है। यदि आप अनुरोध करने के लिए अजगर या रूबी का उपयोग करने की कोशिश कर रहे हैं, तो मैं निश्चित रूप से इसके साथ आपकी सहायता कर सकता हूं। –

3
  1. यदि आप सभी पुल अनुरोध (प्रतिबद्धता, टिप्पणियां, मुद्दे इत्यादि) को पुनर्प्राप्त करना चाहते हैं तो आपको अंकन का उपयोग करना होगा। https://developer.github.com/v3/#pagination

  2. जीईटी अनुरोध "खींचता है" केवल खुले पुल-अनुरोध लौटाएगा।

  3. यदि आप सभी पुल-अनुरोध प्राप्त करना चाहते हैं तो आप पैरामीटर स्थिति को सभी पर सेट करते हैं, या आप समस्याओं का उपयोग करते हैं।

अतिरिक्त जानकारी

आप इस तरह के मुद्दों है, तो आप मुद्दों से पुल अनुरोध पहचान कर सकते हैं, और आप तो प्रत्येक पुल अनुरोध कोई फर्क नहीं पड़ता अगर यह प्राप्त कर सकते हैं के रूप में Github से अन्य डेटा, की जरूरत है बंद या खुला है। यह आपको कुछ और विशेषताओं (मर्ज करने योग्य, विलय, विलय-प्रतिबद्ध-शा, एनआईटी आदि) भी प्रदान करेगा यदि कोई समस्या पुल-अनुरोध है, तो इसमें उस विशेषता होगी। अन्यथा, यह सिर्फ एक मुद्दा है।

एपीआई से:https://developer.github.com/v3/pulls/#labels-assignees-and-milestones

"हर पुल अनुरोध एक मुद्दा है, लेकिन हर मुद्दे एक पुल अनुरोध है इस कारण से,।" साझा "दोनों सुविधाओं के लिए कार्रवाई, जोड़ तोड़ निर्दिष्ट, लेबल और की तरह मील का पत्थर, मुद्दे एपीआई के भीतर प्रदान किए जाते हैं। "

संपादित मैं बस में पाया गया कि मुद्दों समान व्यवहार करती पुल अनुरोध करने के लिए है, तो एक सब

+0

क्या आप सभी पुल अनुरोध (राज्य के साथ 'सभी ') प्राप्त करने के लिए कोड प्रदान कर सकते हैं –

+0

मुझसे पूछने के लिए क्षमा करें, मुझे लगता है कि यह @ क्षयनागपाल –

3

आप परिवर्तनीय state के माध्यम से सभी पुल अनुरोध (बंद, खोला, विलय) प्राप्त कर सकते हैं।

बस प्राप्त क्वेरी में state=all सेट अधिक जानकारी के लिए इस->

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

की तरह,: https://developer.github.com/v3/pulls/#list-pull-requests

+0

द्वारा प्रदान किए गए परिणामों से केवल पुल अनुरोध संख्या को फ़िल्टर करने के लिए कैसे प्रदान किया जाता है –

+0

मेरी समस्या यह है कि अगर मुझे मिलता है? राज्य = सब, यह एक छोटी संख्या देता है? राज्य = बंद +? राज्य = खुला – Akabelle

2

PyGithub (https://github.com/PyGithub/PyGithub), कम से पैरामीटर तालिका जाँच GitHub API एक्सेस करने की एक अजगर पुस्तकालय v3, आपको पृष्ठांकित संसाधन प्राप्त करने में सक्षम बनाता है।

उदाहरण के लिए,

g = Github(login_or_token=$YOUR_TOKEN, per_page=100) 
r = g.get_repo($REPO_NUMBER) 

for pull in r.get_pulls('all'): 
    # You can access pulls 

प्रलेखन (http://pygithub.readthedocs.io/en/latest/index.html) देखें।

संबंधित मुद्दे

 संबंधित मुद्दे