Respuestas:
Significa que cuando realiza una confirmación en el sistema de control de versiones, todo lo que desea confirmar entra, O nada lo hace.
En CVS, cuando intenta confirmar, es posible que la confirmación tenga éxito en varios archivos y luego falle en varios otros (porque han cambiado). Esto deja el repositorio en un estado desafortunado porque la mitad de su confirmación no está allí, y es probable que haya dejado las cosas en un estado donde no se compilarán o peor. Ahora debe apurarse e integrar cualquier cambio para poder confirmar los otros archivos antes de que alguien más necesite actualizar y obtener su conjunto de cambios roto.
En SVN esto no sucederá: SVN confirmará todo lo que ha cambiado o fallará todo el conjunto de cambios. Por lo tanto, nunca dejará el repositorio en un estado roto debido a problemas de confirmación.
Esto se explica, por ejemplo, en Bye-bye CVS. He sido subvertido el artículo escrito por Andy Lester :
Si intento comprometerme en Subversion, pero uno de los archivos tiene un conflicto o está desactualizado, ninguno de los archivos se compromete. En CVS, tiene un conjunto de archivos medio comprometidos que debe corregir AHORA MISMO.
El hecho de que CVS obligue al programador a corregir la fusión de inmediato es tan contraproducente como se pone. En comparación con eso, una opción para retrasar / cancelar / fusionar cuidadosamente los cambios es un beneficio sustancial.
Otros beneficios de SVN sobre CVS explicados en el artículo anterior son:
Versiones locales de todo lo que haces
Si quieres cvs diff, debes poder conectarte a tu repositorio. Sin conexión de red, sin diferencias. Subversion almacena copias prístinas locales de lo que está trabajando, por lo que svn diff funcionará bien. ¿Quieres empezar de nuevo? svn revert también funciona sin conexión.Nombres simbólicos de las revisiones
HEAD es el nombre de la punta del tronco en CVS, pero siempre he querido poder decir "-r-1" como si pudiera regresar en los días de PVCS. Con CVS, tengo que hacer un registro de cvs en lo que estoy editando, y luego restar uno. Eso no es divertido. Con Subversion, puedo decir svn diff -r PREV.Informes de estado real
En CVS, la única forma de ver si algo en el servidor es más reciente es actualizar cvs y esperar que lo que ocurra no cause ningún conflicto. Con el comando svn status, obtengo un estado real, por lo que puedo ver si hay conflictos ANTES de hacer una actualización.Manejo útil de conflictos de fusión
En CVS, si hay conflictos, obtendrá marcadores de conflicto en su archivo. En Subversion, obtienes marcadores de conflicto, ADEMÁS una copia de tu archivo original previo al conflicto, ADEMÁS de la versión que salió del servidor, ADEMÁS de la versión que estabas editando originalmente. Luego, debe svn resolver explícitamente filename.txt para decirle a Subversion que ha solucionado el problema. No más accidentalmente volviendo a ingresar a CVS con marcadores de conflicto todavía allí.
Significa que todos los cambios en todos los archivos se confirman en una sola transacción, por lo que todos tienen éxito o ninguno.
Esto significa que es menos probable que se registren ediciones parciales en el repositorio, lo que hace que las compilaciones fallen. Todavía puede hacer que la gente se olvide de revisar todos los archivos relevantes, pero ese es un problema de proceso en lugar de un problema con el sistema de versiones.