CVS era lo que había a finales de los noventa y principios de los dos mil. Centralizado, con un modelo de bloqueo de archivos que convertía trabajar en paralelo en un ejercicio de paciencia. Los errores salían caros: los commits no eran atómicos, sino una serie de operaciones archivo a archivo. Si algo fallaba a la mitad, el repositorio quedaba en un estado inconsistente (unos archivos en la nueva versión, otros en la antigua) sin manera limpia de deshacerlo. Renombrar un archivo significaba perder su historial.
SVN llegó en 2004 (1.0) a resolver exactamente eso. Commits atómicos, mejor manejo de directorios, historial más limpio. Una mejora real. Pero seguía siendo centralizado. Si el servidor no era accesible, el trabajo se paraba.
En 2007, Darcs planteaba algo diferente: era distribuido (cada desarrollador tenía el repositorio completo), y su modelo de parches era elegante (en teoría): en lugar de snapshots, registraba cambios que se podían reordenar y combinar. Y hasta se podía usar un correo para distribuir los cambios. La idea era brillante. En la práctica, era lento en repositorios grandes y la comunidad era pequeña. Pero fue la primera vez que trabajar con un VCS dejó de ser un obstáculo.
En 2009, Bazaar, la apuesta de Canonical, era más rápido que Darcs, mejor herramienta, la misma idea, pero nunca despegó fuera del ecosistema de Ubuntu y Launchpad. La comunidad no llegó a crecer lo suficiente.
En esos años empezaron a salir muchos VCS distintos, pero había uno del que todo el mundo empezó a hablar: Git. Tenía detrás a Linus Torvalds, que lo creó en 2005 para el kernel de Linux con un objetivo claro: velocidad.
Las ramas en Git no copiaban archivos, solo movían un puntero. Hacer una rama, probar algo, descartarlo o fusionarlo, todo en segundos. Esto era lo que todo el mundo quería, era lo que faltaba y era maravilloso.
Gitorious y GitHub en 2008 cambiaron la ecuación: de repente había un lugar centralizado para colaborar sin perder las ventajas del sistema distribuido.
Lo que hace diferente a Git no es solo la velocidad o las ramas. Es que cambia cómo se piensa el trabajo: commits pequeños y frecuentes, ramas para experimentar sin miedo, historia de cualquier archivo disponible en cualquier momento. El índice (staging area) parece raro al principio pero permite construir commits precisos aunque el directorio de trabajo esté sucio.
CVS y SVN siguen ahí, en empresas con décadas de historia, pero Git ha ganado por méritos propios.