2014-09-18 7 views
5

मेरे पास बाइनरी फाइलों के साथ एक रेपो है जो मुझे चाहिए।मैं गिटहब रिलीज की बाइनरी फाइलें कैसे डाउनलोड करूं?

मैं

git checkout tags/thetagoftherelease 

जो सही टैग चेकआउट करने लगता है, लेकिन बाइनरी फ़ाइलें नीचे खींच नहीं करता है। मैं रिलीज में जोड़े गए बाइनरी फ़ाइलों को कैसे खींच सकता हूं (रिलीज पर हरे रंग के बक्से)?

रिलीज में बाइनरी फ़ाइलों की तस्वीर जोड़ा गया।

enter image description here

+0

नीचे वोट उपयोगी –

+0

* पुल नहीं हैं * या * चेकआउट *? गिट में वे दो बहुत ही अलग शब्द हैं। इसके अलावा, क्या "हरे रंग के बक्से"? – Jubobs

+0

क्षमा करें, पुल बोलने का उपयोग कर रहा था। ग्रीन बक्से के रूप में, गिट पर एक रिलीज के लिए बाइनरी फाइलें जोड़ा। वे हरे रंग के बक्से के रूप में दिखाई देते हैं जिन्हें आप गिटूब पर मैन्युअल रूप से डाउनलोड कर सकते हैं। मैं रिलीज से इन अतिरिक्त बाइनरी फ़ाइलों को डाउनलोड करना चाहता हूं। रिलीज टैग की जांच करना मुझे बाइनरी फाइल नहीं देता है। –

उत्तर

14

मैंने इस पर उचित उत्तर खोजने की कोशिश करने के दिनों की कोशिश की है, और आखिर में मैंने यह पता लगाया कि कर्ल कमांड के माध्यम से इसे कैसे किया जाए। यह एक 3-चरणीय प्रक्रिया है। JSON में फिर

curl -H "Authorization: token YOURGITHUBTOKEN" https://api.github.com/repos/NAME/REPO/releases/latest 

, संपत्ति आप चाहते हैं का यूआरएल को देखने के:

पहले, नवीनतम रिलीज के लिए संपत्ति की एक सूची प्राप्त करने के लिए। उदाहरण के लिए यह इस तरह दिखेगा: "यूआरएल": "https://api.github.com/repos/NAME/REPO/releases/assets/1275759"

फिर आप वास्तविक URL को पुनर्प्राप्त करने के लिए इसे दूसरे कर्ल कमांड पर पास करते हैं, जो वास्तव में एक अमेज़ॅन एस 3 फ़ाइल का लिंक है।

curl -H "Authorization: token YOURGITHUBTOKEN" -H "Accept:application/octet-stream" -i https://api.github.com/repos/NAME/REPO/releases/assets/1275759 

यूआरएल HTTP प्रतिक्रिया के "स्थान" क्षेत्र में हो जाएगा, और उसके बाद कर्ल का उपयोग इस तरह फ़ाइल प्राप्त करने के लिए:

कोई टिप्पणी नहीं साथ
curl "https://github-cloud.s3.amazonaws.com...." -i -o FILENAME 
+1

सबसे अच्छा जवाब, धन्यवाद। कर्ल भूल जाओ, http://httpie.org (सीएलआई HTTP क्लाइंट, सहज उपयोगकर्ता के साथ उपयोगकर्ता के अनुकूल कर्ल प्रतिस्थापन, JSON समर्थन, वाक्यविन्यास हाइलाइटिंग, wget- जैसे डाउनलोड, एक्सटेंशन इत्यादि) – frekele

+1

बनाएं एस 3 यूआरएल को घेरने के लिए उद्धरणों का उपयोग करना सुनिश्चित करें। अन्यथा कर्ल इसे apropiately नहीं मिलेगा। –

4

बाइनरी रिहाई संपत्ति Git के बाहर मौजूद हैं, और मानक उपकरण का उपयोग कर प्रबंधित नहीं किया जा सकता है।

हालांकि, उन्हें गिटहब के एपीआई के माध्यम से उपलब्ध होना चाहिए।

  1. List the repository's release assets:

    GET /repos/:owner/:repo/releases/:id/assets 
    

    यह वापस भेज देंगे एक JSON दस्तावेज़ भंडार, उदा रिहाई संपत्ति लिस्टिंग

    [ 
        { 
        "url": "https://api.github.com/repos/octocat/Hello-World/releases/assets/1", 
        "browser_download_url": "https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip", 
        "id": 1, 
        "name": "example.zip", 
        "label": "short description", 
        "state": "uploaded", 
        "content_type": "application/zip", 
        "size": 1024, 
        "download_count": 42, 
        "created_at": "2013-02-27T19:35:32Z", 
        "updated_at": "2013-02-27T19:35:32Z", 
        "uploader": { 
         "login": "octocat", 
         ... 
        } 
        } 
    ] 
    
  2. Retrieve the assts from the release you want, जैसा कि ऊपर से अपने id द्वारा परिभाषित:

    GET /repos/:owner/:repo/releases/assets/:id 
    

    आप संपत्ति के द्विआधारी सामग्री डाउनलोड करने के लिए, "application/octet-stream" की एक मीडिया प्रकार पारित चाहते हैं। एपीआई या तो क्लाइंट को स्थान पर रीडायरेक्ट करेगा, या यदि संभव हो तो इसे सीधे स्ट्रीम करेगा। एपीआई क्लाइंट को 200 या 302 प्रतिक्रिया दोनों को संभालना चाहिए।

documented के रूप में, इन अनुरोधों सभी https://api.github.com के सापेक्ष हैं।

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