2012-04-02 14 views
5

En uno de mis proyectos de git, tengo un archivo zip que agrupa un conjunto de bibliotecas de Java. El archivo zip es de 4.5MB y contiene 11 archivos. Solo una de las bibliotecas contenidas se cambia regularmente, en la que estoy trabajando (que es del orden de 50 KB). Las otras bibliotecas son estáticas.¿Git maneja inteligentemente un archivo zip en el cual solo uno de los archivos cambia regularmente?

Sería grandioso si git smartly solo cambia este pequeño cambio en el archivo zip, y no reemplaza el archivo zip completo con cada confirmación. De lo contrario, mi repositorio de git crecerá muy rápido.

Cuando he actualizado mi biblioteca y han recreado el archivo zip, y comprometerse + empujar los cambios, noto que git escribe objetos en el orden de < 100KB al servidor, como "objetos de escritura: 100% (58/58), 77.64 KiB, hecho. ". Así que parece que git smartly envía solo la parte modificada del zip, y no todo el archivo comprimido de 4.5MB una y otra vez.

¿Es realmente cierto que git maneja inteligentemente archivos zip?

Respuesta

5

Git sabe cómo manejar diffs en archivos binarios, por lo que si algunos archivos han cambiado en el archivo comprimido, no almacenará el archivo completo en cada confirmación.

Como nota al margen, no recomendaría almacenar zip en su repositorio, ya que es probable que sea un artefacto (es decir, resultado de compilación) de su código, a menos que sea un repositorio que almacene solo sus artefactos.

+0

Eso tiene sentido, eso es genial. Tiene razón sobre el almacenamiento de binarios en un repositorio fuente. Sin embargo, quiero ofrecer un binario fácil de descargar que esté siempre actualizado (en lugar de tener que actualizar y subir binarios a mano). –

+0

Luego, dale la oportunidad a git hooks y scripting :) – CharlesB

Cuestiones relacionadas