2012-05-02 3 views
6

Estoy tratando de usar la biblioteca de pygit2.agregar blobs o árboles a un repositorio creado usando pygit2 (libgit2)?

parece que me quedé atrapado en el primer paso. su documentación no explica cómo crear un blob y agregarlo a un árbol. Se trata principalmente de cómo trabajar con un repositorio git existente, pero quiero crear uno y agregar blobs, commits, ... a mi repositorio. ¿Es posible crear un blob desde un archivo directamente o debería leer el contenido del archivo y establecer blob.data?

from pygit2 import Repository 
from pygit2 import init_repository 

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

¿Cómo puedo crear y agregar blobs o árboles al depósito?

Respuesta

7

Los enlaces de python no permiten crear un blob de un archivo directamente, por lo que deberá leer el archivo en la memoria y usar Repository.write(pygit2.GIT_OBJ_BLOB, filecontents) para crear el blob.

A continuación, puede crear árboles con el TreeBuilder, por ejemplo, como

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

Muchas gracias, ¿cómo puedo obtener más información sobre pygit2? nada de lo que mencionas está en el documento pygit2, ¿cómo aprendiste a usarlo? –

+1

@PeqiHash Carlos es uno de los desarrolladores de libgit2 – T0xicCode

+1

Si cambiaste un archivo, aún agregas todo el archivo al repositorio como un blob y luego haces referencia a ese oid con un inserto usando TreeBuilder ... o hay algo que ver con un parche aquí? – ChipJust

Cuestiones relacionadas