2011-05-10 14 views
5

Mi empresa está considerando la implementación de Git, pero tengo una pregunta sobre cuál sería la mejor manera de configurarlo. Tenemos 3 sitios y estamos planeando usar Gerrit2 para crear espejos. Nuestro repositorio tiene aproximadamente 2 GB y nos gustaría comenzar a agregarle binarios. Sin embargo, me preocupa el uso del espacio. No me importa si todas las versiones de los binarios están almacenadas en un puñado de ubicaciones, pero quiero asegurarme de que no empantanen las operaciones de clonación.Configuración del repositorio de Git con los binarios

Entiendo que Git utiliza enlaces duros, pero creo que solo funcionará si colocamos una copia del repositorio en cada montaje. ¿Hay mejores opciones y, de ser así, cuáles son las compensaciones? Las opciones que estoy viendo son "--shared" y "--reference".

Respuesta

3

Para utilizar git nativo, utilice un repositorio independiente para alojar los binarios mediante los submódulos de git. Esto me ha funcionado en los sistemas de IVR que tenían una tonelada de gigantescos archivos .wav. Si necesita más aclaraciones, no dude en ponerse en contacto conmigo.

He aquí una buena escritura en ellos:

http://progit.org/book/ch6-6.html

esperanza esto ayuda

+0

Los submódulos se ven interesantes, pero ¿cómo interactúan con los registros parciales? ¿Puedo especificar que quiero verificar solo una parte del submódulo o tengo que verificar todo? – dromodel

+0

que puede manejarse con ramas especiales dentro del repositorio de submódulos que tendrían los archivos que necesita. –

3

Use git-media para archivos binarios grandes. Almacena referencias a binarios como sumas SHA1 y aloja los binarios en un lugar (y protocolo) de su elección. Cuando haces un clon, solo obtiene los binarios necesarios para completar la copia de trabajo.

+0

Eso podría complicar la sincronización de todos los sitios ya que Gerrit2 no los recogería. El soporte de pago parcial también parece estar ausente, según los comentarios a continuación. Interesante opción sin embargo. – dromodel

6

Otra alternativa para git mediamentioned por Marcelo es git annex:

Ver what git-annex is not:

git-anexo no es git-media, aunque ambos se aproximan al mismo problema desde una dirección similar. Solo supe de git-media después de escribir git-annex, pero probablemente todavía habría escrito git-annex en lugar de usarlo.

Actualmente, git-media tiene la ventaja de usar filtros git smudge en lugar de la pila de enlaces simbólicos de git-annex, y puede ser más ajustado para ciertas situaciones.
Carece de la compatibilidad de git-annex para el almacenamiento ampliamente distribuido, utilizando solo un único almacén de datos back-end.
Tampoco admite revisiones parciales del contenido del archivo, como git-annex does.


Nota: abdelsaid añade in the comments:

Puede utilizar git-anexo con bup (BUP le permite tener las versiones), consulte git-annex/ special remotes/ bup (y Using bup)

tengo presentado bup en más detalles en "git with large files"

+0

Parece que no le permite mantener múltiples revisiones de binarios, solo almacena los que tiene por separado. – dromodel

+0

Sé que este es un comentario antiguo, pero si alguien viene aquí, puede usar git-annex con bup (bup le permite tener versiones), consulte https://git-annex.branchable.com/special_remotes/bup/ – vimdude

+0

@ abdelsaid buena actualización. He incluido su comentario en la respuesta para obtener más visibilidad, y he agregado un enlace a otra respuesta mía donde hablé sobre bup. – VonC

2

Sin embargo, otra posibilidad es git-fat (o fork de Cyan de git en grasa con algunas mejoras); es incluso más ligero (depende solo de Python y rsync) que git-media (Ruby), y definitivamente más liviano que git-annex (Haskell). El costo de eso es menos configurable, pero esta puede ser la mejor solución en algunos casos.

Cuestiones relacionadas