2013-11-26 8 views
18

मैं अपने रेपो पर किसी फ़ाइल को अपडेट करने के लिए इस एपीआई का उपयोग कर रहा हूँ लगता है कैसे, यह मेरे की आवश्यकता है एक फ़ाइल के लिए मान्य SHA ब्लॉब कि मैं अद्यतन करना चाहते है:एक Github फ़ाइल के SHA ब्लॉब

http://developer.github.com/v3/repos/contents/

मुझे विशिष्ट फ़ाइल के लिए SHA ब्लॉब कैसे मिल सकता है? परीक्षण परीक्षा में मेरे testrepo में माना जाता है, test.txt फ़ाइल के लिए SHA blob क्या है?

https://github.com/testacc01/testrepo01

बहुत बहुत शुक्रिया!

उत्तर

10

फ़ाइल अपडेट करने के लिए दस्तावेज़ निर्दिष्ट करते हैं कि आपको उस फ़ाइल के लिए SHA प्रदान करने की आवश्यकता होगी जिसे आप बदल देंगे। इसके लिए भी जिथब से पूछना सबसे आसान तरीका होगा। उदाहरण के लिए:

> curl https://api.github.com/repos/testacc01/testrepo01/contents/test.txt 
{ 
    "name": "test.txt", 
    "path": "test.txt", 
    "sha": "4f8a0fd8ab3537b85a64dcffa1487f4196164d78", 
    "size": 13, 
… 

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

+0

धन्यवाद जो मेरे लिए काम करता है, मैं भूल जाता हूं कि फाइल अपडेट होने के बाद एसएचए स्वचालित रूप से अपडेट हो जाएगा। – Kiddo

+0

मैं गिटहब के वी 3 एपीआई दस्तावेज़ों में नहीं ढूंढ पा रहा था जो विशिष्ट एसएचए हैशिंग फ़ंक्शन जो इन्हें उत्पन्न करने के लिए उपयोग कर रहे हैं - SHA1, SHA256, आदि (ताकि मैं स्वयं के खिलाफ फ़ाइल सामग्री को सत्यापित कर सकूं)। मेरा मानना ​​है कि गिट प्रतिबद्ध हैश के लिए SHA-1 का उपयोग करता है लेकिन यह मेरे लिए अस्पष्ट था कि हैशिंग फ़ंक्शन गिटहब हैशिंग फ़ाइल सामग्री के लिए उपयोग कर रहा है। मैंने इस जानकारी का अनुरोध करने के साथ उनके साथ एक टिकट खोला है। –

0

आप GraphQL API v4 उपयोग करते हैं, आप एक विशिष्ट फ़ाइल के शा को खोजने के लिए निम्न का उपयोग कर सकते हैं:

{ 
    repository(owner: "testacc01", name: "testrepo01") { 
    object(expression: "master:test.txt") { 
     ... on Blob { 
     oid 
     } 
    } 
    } 
} 

Try it in the explorer