2012-05-02 34 views
6

Tôi đang cố sử dụng thư viện pygit2.thêm các đốm màu hoặc cây vào một kho lưu trữ được tạo bằng pygit2 (libgit2)?

có vẻ như tôi đã gặp khó khăn trong bước đầu tiên. tài liệu của nó không giải thích cách tạo một blob và thêm nó vào một cái cây. Đó là chủ yếu là xung quanh làm thế nào để làm việc với một kho git hiện có nhưng tôi muốn tạo ra một và thêm các đốm màu, cam kết, ... để repo của tôi. Có thể tạo một blob từ một tập tin trực tiếp hay tôi nên đọc nội dung tập tin và thiết lập blob.data?

from pygit2 import Repository 
from pygit2 import init_repository 

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

Làm cách nào để tạo và thêm màu hoặc cây vào kho?

Trả lời

7

Kết nối python không cho phép bạn tạo blob từ tệp trực tiếp, vì vậy bạn sẽ phải đọc tệp trong bộ nhớ và sử dụng Repository.write(pygit2.GIT_OBJ_BLOB, filecontents) để tạo blob.

Sau đó bạn có thể tạo cây với TreeBuilder, ví dụ, như

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

Cảm ơn rất nhiều, làm thế nào tôi có thể tìm hiểu thêm về pygit2? không có điều gì bạn đề cập trong tài liệu pygit2, Bạn đã học cách sử dụng nó như thế nào? –

+1

@PeqiHash Carlos là một trong những nhà phát triển của libgit2 – T0xicCode

+1

Nếu bạn đã thay đổi một tệp, bạn vẫn thêm toàn bộ tệp vào repo dưới dạng blob và sau đó tham chiếu đến oid bằng chèn bằng TreeBuilder ... hoặc có liên quan đến một miếng vá ở đây? – ChipJust

Các vấn đề liên quan