2012-05-02 19 views
6

मैं pygit2 लाइब्रेरी का उपयोग करने की कोशिश कर रहा हूं।pygit2 (libgit2) का उपयोग कर एक निर्मित भंडार में ब्लॉब्स या पेड़ जोड़ें?

लगता है कि मैं पहले चरण पर फंस गया। इसका प्रलेखन यह नहीं बताता कि ब्लॉब कैसे बनाएं और इसे पेड़ में कैसे जोड़ें। यह ज्यादातर मौजूदा गिट भंडार के साथ काम करने के तरीके के आसपास है, लेकिन मैं अपने रेपो में एक बनाना और ब्लॉब्स जोड़ना चाहता हूं। क्या फ़ाइल से सीधे ब्लॉब बनाना संभव है या क्या मुझे फ़ाइल सामग्री पढ़नी चाहिए और blob.data सेट करना चाहिए?

from pygit2 import Repository 
from pygit2 import init_repository 

bare = False 
repo = init_repository('test', bare) 

मैं भंडार में ब्लब्स या पेड़ कैसे बना सकता हूं और जोड़ सकता हूं?

उत्तर

7

पायथन बाइंडिंग आपको सीधे फ़ाइल से ब्लॉब बनाने की अनुमति नहीं देते हैं, इसलिए आपको फ़ाइल में स्मृति में पढ़ने और Repository.write(pygit2.GIT_OBJ_BLOB, filecontents) का उपयोग ब्लॉब बनाने के लिए करना होगा।

फिर आप TreeBuilder साथ पेड़, उदाहरण के लिए एक बहुत बना सकते हैं, जैसे

import pygit2 as g 

repo = g.Repository('.') 
# grab the file from wherever and store in 'contents' 
oid = repo.write(g.GIT_OBJ_BLOB, contents) 
bld = repo.TreeBuilder() 
# attributes is whether it's a file or dir, 100644, 100755 or 040000 
bld.insert('file.txt', oid, attributes) 
treeoid = bld.write() 
+6

धन्यवाद, मैं pygit2 के बारे में अधिक सीख सकते हैं? आपने जो भी उल्लेख किया है वह कोई भी pygit2 दस्तावेज़ में नहीं है, आपने इसका उपयोग कैसे किया है इसका उपयोग कैसे किया? –

+1

@PeqiHash Carlos libgit2 – T0xicCode

+1

के डेवलपर्स में से एक है यदि आपने कोई फ़ाइल बदल दी है तो क्या आप अभी भी पूरी फ़ाइल को ब्लॉब के रूप में रेपो में जोड़ते हैं और उसके बाद ट्रीबिल्डर का उपयोग करके डालने के साथ संदर्भित करते हैं ... या क्या इसके साथ कुछ करना है यहाँ एक पैच? – ChipJust