2012-05-02 2 views
6

Ich versuche, pygit2-Bibliothek zu verwenden.Hinzufügen von Blobs oder Bäumen zu einem erstellten Repository mit pygit2 (libgit2)?

scheint ich auf dem ersten Schritt stecken geblieben. In der Dokumentation wird nicht erläutert, wie ein Blob erstellt und einer Baumstruktur hinzugefügt wird. Es geht hauptsächlich darum, mit einem vorhandenen Git-Repository zu arbeiten, aber ich möchte eines erstellen und Blobs, Commits, ... zu meinem Repo hinzufügen. Ist es möglich, direkt aus einer Datei einen Blob zu erstellen, oder sollte ich den Inhalt der Datei lesen und blob.data einstellen?

from pygit2 import Repository 
from pygit2 import init_repository 

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

Wie kann ich Blobs oder Bäume zum Repository erstellen und hinzufügen?

Antwort

7

Mit den Python-Bindungen können Sie kein Blob direkt aus einer Datei erstellen, daher müssen Sie die Datei in den Speicher einlesen und den Blob mit Repository.write(pygit2.GIT_OBJ_BLOB, filecontents) erstellen.

Sie können dann erstellen Bäume mit den TreeBuilder zum Beispiel wie

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

Dank viel, wie kann ich mehr über pygit2 lernen? nichts von dem, was Sie erwähnt haben, ist in pygit2 Dokument, Wie haben Sie gelernt, es zu benutzen? –

+1

@PeqiHash Carlos ist einer der Entwickler von libgit2 – T0xicCode

+1

Wenn Sie eine Datei geändert haben, fügen Sie immer noch die gesamte Datei als Blob zum Repo hinzu und verweisen dann auf diese OID mit einem Einfügen mit TreeBuilder ... oder hat etwas damit zu tun ein Patch hier? – ChipJust

Verwandte Themen