2012-11-17 9 views
7

मैं स्फिंक्स दस्तावेज़ प्रणाली प्लग-इन के लिए प्लग-इन बनाने की योजना बना रहा हूं जो दस्तावेज़ों में योगदान करने वाले व्यक्तियों के नाम और गिथब प्रोफ़ाइल लिंक दिखाता है।Github व्यक्तिगत फ़ाइल योगदानकर्ता प्राप्त करना

Github इस सुविधा है आंतरिक

Contributors

  • यह Github एपीआई के माध्यम से फ़ाइल योगदानकर्ताओं के Github प्रोफाइल लिंक प्राप्त करना संभव है? ध्यान दें कि कमिटर ईमेल पर्याप्त नहीं हैं, कोई उन्हें गिटब उपयोगकर्ता प्रोफ़ाइल लिंक पर मैप करने में सक्षम होना चाहिए। यह भी ध्यान रखें कि मैं सभी रिपोजिटरी योगदानकर्ता नहीं चाहता - केवल व्यक्तिगत फ़ाइल योगदानकर्ता।

  • यदि यह संभव नहीं है तो किस प्रकार के वैकल्पिक तरीके (निजी एपीआई, स्क्रैपिंग) आप इस जानकारी को गीथूब से निकालने का सुझाव दे सकते हैं?

उत्तर

8

सबसे पहले, आप कर सकते हैं show the commits for a given file:

https://api.github.com/repos/:owner/:repo/commits?path=PATH_TO_FILE 

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

https://api.github.com/repos/git/git/commits?path=README

दूसरा, कि JSON प्रतिक्रिया करता है , लेखक खंड में, 'नामक एक यूआरएल दर्ज किया गया है 343,210 'GitHub प्रोफ़ाइल की:

"author": { 
     "login": "gitster", 
     "id": 54884, 
     "avatar_url": "https://0.gravatar.com/avatar/750680c9dcc7d0be3ca83464a0da49d8?d=https%3A%2F%2Fidenticons.github.com%2Ff8e73a1fe6b3a5565851969c2cb234a7.png", 
     "gravatar_id": "750680c9dcc7d0be3ca83464a0da49d8", 
     "url": "https://api.github.com/users/gitster", 
     "html_url": "https://github.com/gitster",  <========== 
     "followers_url": "https://api.github.com/users/gitster/followers", 
     "following_url": "https://api.github.com/users/gitster/following{/other_user}", 
     "gists_url": "https://api.github.com/users/gitster/gists{/gist_id}", 
     "starred_url": "https://api.github.com/users/gitster/starred{/owner}{/repo}", 
     "subscriptions_url": "https://api.github.com/users/gitster/subscriptions", 
     "organizations_url": "https://api.github.com/users/gitster/orgs", 
     "repos_url": "https://api.github.com/users/gitster/repos", 
     "events_url": "https://api.github.com/users/gitster/events{/privacy}", 
     "received_events_url": "https://api.github.com/users/gitster/received_events", 
     "type": "User" 
    }, 

तो तुम यहाँ किसी भी वेब पेज को स्क्रैप की जरूरत नहीं होनी चाहिए।


यहाँ कि वर्णन करने के लिए एक very crude jsfiddle, जावास्क्रिप्ट निकालने पर आधारित है:

var url = "https://api.github.com/repos/git/git/commits?path=" + filename 
$.getJSON(url, function(data) { 
    var twitterList = $("<ul />"); 
    $.each(data, function(index, item) { 
     if(item.author) { 
      $("<li />", { 
       "text": item.author.html_url 
      }).appendTo(twitterList); 
     } 
    }); 

get Contributors from a GiHub file

+0

हमेशा के रूप में, यह आपके उत्तरों को पढ़ने में खुशी है, वॉन। व्यापक और बिंदु पर। –

+0

धन्यवाद। यही वह है जिसकी तलाश में मैं हूं। मैं देखूंगा कि बक्षीस देने से पहले वैकल्पिक उत्तर होंगे या नहीं। –

+1

ठीक है परिणाम यहां देखे जा सकते हैं: https://github.com/miohtama/sphinxcontrib.contributors/ :) –

1

इसके लिए आपको Github API का उपयोग करने की आवश्यकता क्यों है? तुम बस पैकेज क्लोन कर सकते हैं और प्रयोग git log:

git log --format=format:%an path/to/file ver1..ver2 |sort |uniq

+0

ध्यान दें कि कमिटर ईमेल पर्याप्त नहीं हैं, कोई उन्हें गिटब उपयोगकर्ता प्रोफ़ाइल लिंक पर मैप करने में सक्षम होना चाहिए। <- कौन सा हिस्सा समझना मुश्किल है? –

+0

यह एक और परत जोड़ने के लिए मुश्किल नहीं होगा ('.mailmap' के समान) जो ईमेल -> github उपयोगकर्ता को मानचित्र करता है। – plaes

+1

@MikkoOhtamaa आप केवल गिटहब में ईमेल पते की खोज कर सकते हैं। –

0

जब तक यह आवश्यक GitHub एपीआई के साथ बातचीत के लिए नहीं है सीधे एक मिल सकता है रिपो डाउन क्लोनिंग करके और फिर क्लोन निर्देशिका में शामिल होने और फिर शॉर्टलॉग कमांड

का उपयोग करके जिथब लॉग फ़ाइल से सूची प्राप्त करके योगदानकर्ताओं की सूची
import os 
import commands 

cmd = "git shortlog -s -n" 

os.chdir("C:\Users\DhruvOhri\Documents\COMP 6411\pygithub3-0.3") 
os.system("git clone https://github.com/poise/python.git") 
os.chdir("/home/d/d_ohri/Desktop/python") 
output = commands.getoutput(cmd) 
print(output) 
raw_input("press enter to continue") 

वहाँ योगदानकर्ताओं मामले में एक GitHub एपीआई का उपयोग करने के लिए, हम GitHub एपीआई के साथ बातचीत और योगदानकर्ताओं की सूची प्राप्त करने pytgithub3 आवरण का उपयोग कर सकते चाहता है सूचीबद्ध करने के लिए एक और मार्ग के रूप में list_contributors का उपयोग कर इस प्रकार है:

from pytgithub3.services.repo import Repo 
r = Repo() 
r.lis_contributors(user='userid/author',repo='repo name') 
for page in r: 
    for result in page: 
      print result 
संबंधित मुद्दे