2012-05-02 5 views
6

pygit2 라이브러리를 사용하려고합니다.pygit2 (libgit2)를 사용하여 생성 된 저장소에 블롭 또는 트리를 추가 하시겠습니까?

나는 첫 걸음을 밟았습니다. 그것의 문서는 blob을 생성하고 그것을 트리에 추가하는 방법을 설명하지 않는다. 그것은 대부분 기존 git 저장소로 작업하는 방법에 관한 것이지만 하나를 만들고 Blob, 커밋을 ... 내 저장소에 추가하려고합니다. 파일에서 블롭을 직접 생성 할 수 있습니까? 아니면 파일 내용을 읽고 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)을 사용하여 블롭을 만들어야합니다.

그런 다음

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

감사와 같은 많은 예를 들어 TreeBuilder 나무를 만들 수 있습니다, 어떻게 pygit2에 대한 자세한 내용을 배울 수 있습니까? 언급 한 내용 중 어느 것도 pygit2 문서에 없습니다. 어떻게 사용하는 법을 배웠습니까? –

+1

@PeqiHash Carlos는 libgit2 개발자 중 하나입니다. – T0xicCode

+1

파일을 변경 한 경우 여전히 파일을 blob로 repo에 추가 한 다음 TreeBuilder를 사용하여 insert를 사용하여 해당 oid를 참조하십시오. 또는 다음과 관련이 있습니다 여기 패치? – ChipJust