2015-04-06 26 views
6

Bir dal üzerinde bir taahhütte bulunmak istiyorum (örneğin ana).pygit2 kullanarak bir görünüm oluşturma

ben pygit2 (pygit2.clone_repository) kullanılarak depo klon

Sonra depoda varolan bir dosyayı değiştirmek yapıyorum. Daha sonra

Ben işlemek için bu çalıştırın:

index = repository.index 
index.add_all() 
index.write() 
author = pygit2.Signature(user_name, user_mail) 
commiter = pygit2.Signature(user_name, user_mail) 
tree = repository.TreeBuilder().write() 
oid = repository.create_commit(reference, author, commiter, message,tree,[repository.head.get_object().hex]) 

Ama havuzuna gitmek ve ne zaman git status çalıştırın:

On branch master 
Changes to be committed: 
(use "git reset HEAD <file>..." to unstage) 
new file: test.txt 

değiştirilmiş dosya işlemek ancak taahhüt için eklenecek gibi görünüyor başarılı olamadı. İade edilen Oid'i kullanarak pygit2 deposunda commit niteliğini bulabilirsiniz.

Bir şey mi özledim? Boş bir ağaç yaratıyor ve o zaman koşarsan Gördüğünüz her dosya (sildiğiniz demektir taahhüt için ağaç olarak bu veriyoruz

tree = repository.TreeBuilder().write() 

yazarak

+0

Kodunuzu bir yerde bir yerden bahsetmiyorum, belki bir yere belirtmelisiniz? –

+0

Referans değeri 'ref/heads/master' – user1479699

+0

pygit2 için iyi bir dokümantasyon bulmakta zorlanıyorum, bu yüzden sadece tahmin ediyorum: Bazı durum değişiklikleri yaptıktan sonra çeşitli 'write()' yöntemlerini çağırdığınızı görüyorum . Create_commit(), örtülü olarak yazıyor mu yoksa bunu yapmayı mı unutuyorsunuz? –

cevap

3

Kodunuzu çalıştırdıktan sonra git show HEAD.

Bunun yerine ne istediğiniz depoda (eksik hangisi oluşturarak) bir ağaç olarak endekste veri depolayan ve git commit gibi bir komutu çalıştırmak böyle olur

tree = index.write_tree() 

olduğunu. Daha sonra bu ağacı, şu an yaptığınız gibi oluşturma-oluşturma yöntemine geçirebilirsiniz.

İlgili konular