¿Hay alguna manera de transmitir datos a GIT en lugar de pasar los nombres de los files?

Queremos transmitir documentos a GIT que no existen en un sistema de files (están en una database). Como hay miles de documentos, no queremos crearlos en el disco.

Sabemos que podemos transmitir documentos desde GIT usando las classs GIT Blob.

Queremos proporcionar pragmáticamente tree / path y filename y cualquier otro atributo, pero el file no existirá realmente. GIT mismo transmite datos en sí mismo en algún momento (cuando lee el file) y almacena datos de attributes de files de alguna manera.

Sé cómo agregar files en GIT, quiero interactuar usando una transmisión en su lugar.

¿Es esto posible usar C, C # o Java?

Puedes usar hash-object .

 gitid=$(echo hello world | git hash-object -w --stdin) 

Esto configurará gitid a la id. gitid de un nuevo object blob basado en la salida del command echo .

Luego puedes usar git update-index para agregar una input de índice usando este blob y commit a hacer un object commit que contenga el nuevo blob en tu repository de git.

 git update-index --add --cacheinfo 100644 "$gitid" new-blob.txt git commit -m "new commit" 

También puede crear los objects "a mano", creando los objects y treees de su código. Aquí hay un video de Tom Prestn-Werner de GitHub que describe la estructura: http://sea.ucar.edu/event/unlocking-secrets-git . No sé si ese es el path a seguir, pero es una opción