En los últimos años, he trabajado con varios sistemas de control de versiones diferentes. Para mí, una de las diferencias fundamentales entre ellos ha sido si versionan los archivos individualmente (cada archivo tiene su propia numeración e historial de versiones por separado) o el repositorio como un todo (un "commit" o versión representa una instantánea de todo el repositorio) .
Algunos sistemas de control de versiones "por archivo":
- CVS
- ClearCase
- Visual SourceSafe
Algunos sistemas de control de versiones de "todo el repositorio":
- SVN
- Git
- Mercurial
En mi experiencia, los sistemas de control de versiones por archivo solo han generado problemas y requieren mucha más configuración y mantenimiento para usarlos correctamente (por ejemplo, "especificaciones de configuración" en ClearCase). He tenido muchos casos de un compañero de trabajo que cambia un archivo no relacionado y rompe lo que idealmente sería una línea de desarrollo aislada.
¿Cuáles son las ventajas de estos sistemas de control de versiones por archivo? ¿Qué problemas tienen los sistemas de control de versiones de "todo el repositorio" que los sistemas de control de versiones por archivo no tienen?