Desde mi propia experiencia, las siguientes afirmaciones son ciertas:
- Git es muy eficiente en el almacenamiento de archivos de texto, y solo almacena estos archivos que fueron cambiados. entonces, al hacer una comparación de SVN y Git para comparar los tamaños de repositorio, pueden ser similares o incluso puede haber una pequeña ventaja para Git.
- Esto es completamente incorrecto si compara el tamaño de los repositorios donde una cantidad significativa de archivos son archivos de Office (como MS Word, Excel, PowerPoint, ...). Aquí Git también almacena copias completas, lo que significa que 10 pequeños cambios en una pila de diapositivas de PowerPoint dan como resultado 10 copias completas, donde Subversion solo almacena un diferencial binario, que puede ser un factor de 100 más pequeño.
Si compara la ubicación de pago (que es un repositorio en sí mismo con Git), la historia es totalmente diferente:
- Subversion almacena para cada archivo una copia completa, por lo que el tamaño de su ubicación de pago es normalmente 2 veces el tamaño de los archivos mismos.
- Git almacena el historial completo del repositorio localmente, por lo que, dependiendo del tamaño del historial, esto puede ser más pequeño o mucho más grande que el de la copia de pago de Subversion.
Si compara la cantidad de bytes que tiene que bajar o cargar, es diferente nuevamente.
- Subversion normalmente tiene que enviar o recibir menos bytes, ya que solo envía diferencias. Tiene que hacer eso en cada confirmación y actualización.
- Git tiene que obtener todo el repositorio (inicialmente), y luego envía archivos completos (¿comprimidos?) Que no es tan diferente para los archivos de texto, pero puede ser diferente para los archivos binarios. Y sí, Git solo hace eso cuando empujas o sacas algo al repositorio remoto.
Entonces, al final, comparas manzanas con naranjas, y dependiendo de lo que quieras hacer con Subversion o Git, el resultado puede ser diferente.
@jk preguntó sobre copias completas o diferencias binarias, y no pude responder esa pregunta. Le pregunté a Matthew McCullough que dio un taller de Git últimamente en Jax 2012 (que visité). Se ha tomado el tiempo (muchas gracias a él) para explicar con detalle el funcionamiento interno de Git. Entonces, sí, hay una compresión trabajando allí (y haré un experimento con un archivo de Microsoft Office también y lo compararé con su esencia), pero no, la compresión se realiza en todo el archivo. Citando de su esencia:
Los objetos sueltos se escriben en formato comprimido, pero no delta en el momento de cada confirmación.