2012-05-14 15 views
21

प्रोजेक्ट के बावजूद, मैं जानना चाहता हूं कि एक ही उपयोगकर्ता नाम के लिए सभी सार्वजनिक भंडारों में सभी काम करने का कोई आसान तरीका है या नहीं।किसी उपयोगकर्ता के सार्वजनिक जिथब को कैसे प्राप्त करें

चूंकि मैं कई संगठनों से संबंधित हूं, इसलिए मैं उन परियोजनाओं की एक सूची संकलित करने की कोशिश कर रहा हूं जिन पर मैं एक योगदानकर्ता हूं, साथ ही परियोजनाएं जिन्हें मैंने पुल अनुरोध स्वीकार कर लिया है।

अभी तक मेरा google-fu और github api दस्तावेज़ों के माध्यम से देखकर अपर्याप्त साबित हुआ है।

उत्तर

16

http://zmoazeni.github.com/gitspective/ आपका मित्र है। :-) सभी को "पुश" के रूप में फ़िल्टर करें, और आपके पास अपना विचार है, यद्यपि कोडिंग कार्य के बिना इसे स्वयं लागू करने के लिए।

क्रोम डेवटोल्स "नेटवर्क" टैब के साथ क्या चल रहा है, यह जांचने से आप एपीआई प्रश्नों की नकल करने में मदद कर सकते हैं, अगर आप स्वयं को काम फिर से करना चाहते हैं।

+5

यह ** सभी ** योगदानों के लिए नहीं है। यह केवल मेरे लिए इस साल दिखाता है, 2011 से नहीं। –

1

मुझे पता है कि यह प्रश्न काफी पुराना है, लेकिन मैंने इसका अपना समाधान कोडिंग समाप्त कर दिया है।

अंत में समाधान सभी संभावित भंडारों को ढूंढना है जहां उपयोगकर्ता ने organization_repositories और list_repositories सेवाओं (मैं ऑक्टोकिट का उपयोग कर रहा हूं) का उपयोग करके योगदान दिया।

फिर हमें इन रिपॉजिटरीज़ पर सभी सक्रिय शाखाएं (सेवा branches) मिलती हैं और उनमें से प्रत्येक को केवल हमारे उपयोगकर्ता (सेवा commits) से ही मिलती है।

नमूना कोड एक छोटा सा व्यापक है, लेकिन here

OBS: As pointed out, this solution does not consider organizations and repositories where you contributed but are not part of. 
+0

यह केवल दिखाता है कि आप किस संगठन के साथ-साथ अपने प्रतिनिधि का हिस्सा हैं। यह orgs के लिए ओपन सोर्स रिपोज़ नहीं दिखाता है, जिसका आप हिस्सा नहीं हैं, लेकिन आपने प्रतिबद्ध किया है। – user1130176

+0

अच्छा बिंदु। मैंने संपादित किया ताकि यह उत्तर में स्पष्ट हो। –

9

पाया जा सकता है इस Events API के माध्यम से है करने के लिए सही तरीका।

सबसे पहले आप fetch the user's events की जरूरत है:

GET /users/:username/events 

तो फिर तुम फिल्टर करने के लिए where type is set to PushEvent मदों के लिए प्रतिक्रिया सरणी चाहते है। इन मदों में से प्रत्येक उपयोगकर्ता द्वारा git push से मेल खाता है। उस पुश से काम payload.commits सरणी में रिवर्स क्रोनोलॉजिकल ऑर्डर में उपलब्ध है।

अगला चरण प्रत्येक प्रयोक्ता ऑब्जेक्ट की author.email संपत्ति की जांच करके अन्य उपयोगकर्ताओं द्वारा किए गए कार्यों को फ़िल्टर करना है। आपके पास एक ही ऑब्जेक्ट पर sha, message और url जैसी गुणों तक पहुंच है, और आप distinct प्रॉपर्टी का उपयोग करके एकाधिक धक्का में डुप्लिकेट कमेट को समाप्त कर सकते हैं।

संपादित करें: टिप्पणियों में Adam Taylor द्वारा इंगित किया गया है, यह दृष्टिकोण गलत है। मैं क्षमा चाहता हूँ आरटीएफएम में विफल रहा। एपीआई आपको 300 से अधिक घटनाओं पर लाने देता है और घटनाएं पिछले 9 0 दिनों तक सीमित हैं। मैं यहां पूर्णता के लिए उत्तर छोड़ दूंगा लेकिन लाने के निर्दिष्ट प्रश्न के लिए सभी काम करता है, यह काम नहीं करेगा।

+0

अच्छा जवाब!बहुत बुरा यह बहुत देर हो चुकी है या नहीं तो यह शीर्ष – theEpsilon

+1

होगा [इस पृष्ठ] से कुछ महत्वपूर्ण नोट्स (https://developer.github.com/v3/activity/events/): ईवेंट समर्थन [पेजिनेशन] (https: // डेवलपर .github.com/v3/# पेजिनेशन), हालांकि 'per_page' विकल्प असमर्थित है। निश्चित पृष्ठ का आकार 30 आइटम है। कुल 300 घटनाओं के लिए, दस पृष्ठों तक पहुंचना समर्थित है। पिछले 90 दिनों के भीतर बनाई गई घटनाओं को समय-सारिणी में शामिल किया जाएगा। 90 दिनों से पुरानी घटनाओं को शामिल नहीं किया जाएगा (भले ही समयरेखा में घटनाओं की कुल संख्या 300 से कम हो)। –

+0

मेरी ज़रूरतों के लिए अद्भुत काम करता है ... धन्यवाद !!! –

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