Práctica recomendada para almacenar imágenes en controles de versiones como Subversion

Quiero almacenar files de image en un repository SVN. He leído que SVN intentará almacenar cambios basados ​​en delta en el repository y no solo una simple copy. Sin embargo, una alternativa sería cambiar la image a base64 y almacenarla en una versión de text. Teniendo en count el costo de crear imágenes base64, ¿será esto más práctico o empeorará las cosas?

Git (y Subversion también) usa deltas para almacenar files en el repository. Son, tanto en Git como en Subversion, deltas binarys que manejan bien los files binarys. También encuentran corridas de bytes coincidentes y no dependen de separadores como líneas nuevas presentes.

Mientras que la subversión hace delta contra la revisión previa del file, Git inicialmente almacena el text completo y durante la operación de gc selecciona algunos candidatos probables y selecciona el file más similar para hacer el delta en contra. Esto significa que puede (a veces) aprovechar files separados similares o versiones anteriores cuando los cambios se revierten total o parcialmente. Git que aplica compression de desinflado a texts completos y deltas (Subversion no lo hace).

No hay otros methods de uso general para comprimir el almacenamiento de versiones múltiples de files. Cuando necesite mantener las versiones anteriores de los files, Git es óptimo o casi. La única desventaja en comparación con los sistemas de respaldo dedicados es que Git no puede eliminar versiones antiguas.

La mayoría de las imágenes están comprimidas y eso generalmente significa que cuando hay una diferencia, todo el rest del file también difiere, por lo que no ganan mucho con la compression delta y al ser comprimidas no obtienen mucho de la compression extra aplicada por Git. Sin embargo, Git tiene un mecanismo para proporcionar filters "limpios" y "difuminados" . El filter "limpio" se aplica antes de almacenar el file en el repository, se aplica el filter "difuminar" al verificarlo. En el caso de los files PNG, puede usarlos para reescribir los files sin compression. Si en realidad contienen grandes porciones que son iguales en diferentes versiones, la compression delta se aprovechará de ellas y la compression será aplicada por git después (usa el mismo algorithm), para que no pierda nada. En la práctica, sospecho que solo valdrá la pena si tienes muchas imágenes y grandes partes de ellas son realmente las mismas. También se aplica a otros formattings desinflados como los documentos de OpenOffice.

Git no usa deltas para almacenar diferencias, y con los files de image esto no sería posible de todos modos. Esto significa que, si una image rastreada cambia, boostá el tamaño del repository en un 100% de su propio tamaño, y como las imágenes ya están comprimidas, no se pueden comprimir con el empaque de git.

La pregunta es qué tamaño tienen las imágenes y con qué frecuencia cambian, con lo que puede estimar qué tan rápido crece el repository. Luego puede consultar las recomendaciones de tamaño del repository para su caso de uso.