2012-05-02 16 views
6

Pygit2 kütüphanesini kullanmaya çalışıyorum. İlk adımda sıkışmış gibi görünüyor. Belgeleri bir blobun nasıl oluşturulacağını ve bir ağaca nasıl ekleneceğini açıklamıyor. Çoğunlukla varolan bir git deposuyla nasıl çalışılacağıyla ilgili, ancak bir tane oluşturmak ve bloğa, taahhütlere, ... repo'ya eklemek istiyorum. Doğrudan bir dosyadan blob oluşturmak veya dosya içeriğini okuyup blob.data ayarlamam mümkün mü?pygit2 (libgit2) kullanarak oluşturulmuş bir depoya lekeler veya ağaçlar ekleyin?

from pygit2 import Repository 
from pygit2 import init_repository 

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

Depoya blob veya ağaç nasıl ekleyebilirim ve ekleyebilirim?

cevap

7

Python bağlamaları doğrudan bir dosyadan blob oluşturmanıza izin vermez, bu nedenle dosyada belleği okumak ve bloğu oluşturmak için Repository.write(pygit2.GIT_OBJ_BLOB, filecontents)'u kullanmanız gerekir.

Ardından

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

teşekkür gibi bir çok örneğin TreeBuilder ile ağaçlar oluşturabilir, nasıl pygit2 hakkında daha fazla bilgi edinebilirim? bahsettiğiniz hiç bir şey pygit2 belgesinde yok, nasıl kullanacağınızı nasıl öğrendiniz? –

+1

@PeqiHash Carlos, libgit2'nin geliştiricilerinden biridir – T0xicCode

+1

Eğer bir dosyayı değiştirdiyseniz, tüm dosyayı bir blob olarak repo'ya eklersiniz ve TreeBuilder kullanarak bir insert ile oid'e referans verirseniz ... veya bununla ilgili bir şey var mı? burada bir yama var mı? – ChipJust

İlgili konular