2012-05-02 1 views
6

私はpygit2ライブラリを使用しようとしています。pygit2(libgit2)を使ってブロブやツリーを作成したリポジトリに追加しますか?

私は最初のステップで立ち往生しているようです。そのドキュメントでは、ブロブを作成してツリーに追加する方法について説明していません。これは主に既存のgitリポジトリを使って作業する方法ですが、作成したいBLOB、コミットなどをレポに追加したいと考えています。ファイルから直接ブロブを作成することは可能ですか?またはファイルの内容を読み込んでblob.dataを設定する必要がありますか?

from pygit2 import Repository 
from pygit2 import init_repository 

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

リポジトリにBLOBまたはツリーを作成して追加するにはどうすればよいですか?

答えて

7

pythonバインディングでは、ファイルから直接BLOBを作成することはできませんので、ファイルをメモリに読み込んでRepository.write(pygit2.GIT_OBJ_BLOB, filecontents)を使用してBLOBを作成する必要があります。

あなたはその後、例えば、

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についての詳細を学ぶことができ、TreeBuilderで木を作成することができますか?あなたが言ったことのどれもpygit2文書にありません。どうやってそれを使い方を学びましたか? –

+1

@PeqiHash Carlosはlibgit2の開発者の一人です – T0xicCode

+1

ファイルを変更した場合でも、ファイル全体をblobとしてレポに追加してから、そのoidをTreeBuilderを使って挿入して参照してください...ここのパッチ? – ChipJust

関連する問題