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?
fuente
Respuestas:
En mi experiencia, no hay ninguno: VCS "repositorio completo" domina estrictamente VCS "por archivo".
fuente
Por archivo tiene una ventaja cuando crea líneas de productos (múltiples productos de software) desde el mismo repositorio.
Algunos entornos de contratación de clientes requieren evidencia de que su caída de código SOLO tiene los cambios que desean, y no otros cambios. Esto es bastante fácil si los números de versión del archivo siguen siendo los mismos.
Y este no es un ejemplo al azar que saqué de la nada.
Esto sucedió la última vez que estaba enviando actualizaciones de software al ejército de EE. UU. Para un sistema que compraron grandes cantidades de mi anterior empleador. El valor en dólares de los contratos se midió en miles de millones de dólares fraccionarios (cuando los dólares estadounidenses valían mucho más)
Entonces ayuda algunas veces.
Curiosamente: donde trabajo ahora, enviamos a cada cliente una entrega diferente también ... (Y eso no es algo que decidí, en caso de que te lo estés preguntando).
Sospecho que es mucho más común en el espacio de defensa / aeroespacial que en aplicaciones retráctiles o aplicaciones web.
fuente
git
incluso puede diferenciar entre autor y confirmador, para que pueda mantener un repositorio 'auditado' en el que sepa quién creó el parche (el autor) y quién lo auditó (el confirmador). Bríndenos una situación ejemplar y revertiré mi -1.No hay ninguna ventaja para el versionado por archivo.
Las desventajas, por otro lado, son abundantes y manifiestas.
fuente
Podría decir que los sistemas de control de versiones "por archivo" no tienen ninguna ventaja clara aparte de la implementación del VCS. Los codificadores de VCS estarían encantados de codificar cuando se tratara de una versión "por archivo". Estoy de acuerdo con el punto de que surgió históricamente.
fuente
No hay ninguna ventaja en el enfoque por archivo cuando tiene archivos relacionados. Cuál es el caso más común en una configuración de desarrollo.
En algunos casos peculiares - / etc o. Los archivos en su directorio de inicio en Unix son los únicos que tengo habitualmente: está manejando (en su mayoría) archivos no relacionados. Y luego tener un sistema que insiste en mantener sincronizados los cambios no relacionados puede ser una molestia.
fuente