tortoise subversion definicion svn version-control cvs

subversion - ¿Cuáles son las ventajas de usar SVN sobre CVS?



svn repository (12)

Mi empresa está utilizando CVS como nuestro estándar de facto para el control de fuentes. Sin embargo, he escuchado a mucha gente decir que SVN es mejor.

Sé que SVN es más nuevo, pero aparte de eso, no estoy familiarizado con sus beneficios.

Lo que estoy buscando es una buena y sucinta comparación de los dos sistemas, señalando las ventajas o desventajas de cada uno en un entorno de desarrollo Java / Eclipse.


Apoyaré la sugerencia de Grid de Eridius, pero la ampliaría al otro DRCS (Sistema de control de revisión distribuido) como Mercurial y bazaar .

Estos productos son bastante recientes y el nivel de herramientas e integración con ellos parece bajo en este momento (según mi investigación inicial). Yo diría que fueron más adecuados para los desarrolladores de poder (y aquí ;-)).

Por otro lado, ¿qué no hace CVS actualmente por usted? De su pregunta inicial, realmente no tiene ninguna, "CVS apesta a esto, ¿qué podría usar en su lugar?"

Tiene que sopesar los costos de cualquier migración potencial contra los beneficios. Para un proyecto existente, creo que sería difícil de justificar.


Bueno, algunas cosas que siento hacen que svn sea increíble.

  1. La combinación de crisol SVN-Altassian es un método muy superior de revisiones y controles de calidad.
  2. Mejor gestión de conflictos y fusiones.
  3. Obviamente, es más rápido para realizar pagos, realizar confirmaciones, etc.
  4. El problema de la confirmación atómica: es posible que 2 personas que se comprometen juntas en CVS puedan entrar en conflicto entre sí, perdiendo algunos datos y poniendo su base de código en un estado inconsistente

La migración se puede hacer fácilmente en unas pocas horas usando cvs2svn.


CVS (Sistema de versiones concurrentes) y SVN (SubVersioN) son dos sistemas de archivos de control de versiones que los equipos que colaboran en un solo proyecto utilizan popularmente. Estos sistemas permiten a los colaboradores realizar un seguimiento de los cambios que se realizan y saber quién está desarrollando qué y si una rama se debe aplicar al tronco principal o no. CVS es el más antiguo de los dos y ha sido la herramienta de colaboración estándar para muchas personas. SVN es mucho más nuevo e introduce muchas mejoras para satisfacer las demandas de la mayoría de las personas.


CVS solo rastrea la modificación archivo por archivo, mientras que SVN rastrea un compromiso completo como una nueva revisión, lo que significa que es más fácil seguir el historial de su proyecto. Agregue el hecho de que todo el software de control de fuente moderno utiliza el concepto de revisión, por lo que es mucho más fácil migrar desde SVN que desde CVS.

También está el problema del compromiso atómico. Si bien solo lo encontré una vez, es posible que 2 personas que se comprometen juntas en CVS puedan entrar en conflicto entre sí, perdiendo algunos datos y poniendo a su cliente en un estado inconsistente. Cuando se detectan temprano, estos problemas no son importantes porque sus datos aún están disponibles en alguna parte, pero puede ser un dolor en un ambiente estresante.

Y finalmente, ya no se desarrollan muchas herramientas en torno a CVS. Si bien las herramientas nuevas y brillantes como Git o Mercurial definitivamente carecen de herramientas todavía, SVN tiene una base de aplicaciones bastante grande en cualquier sistema.

EDITAR 2015 : En serio, esta respuesta tiene 7 años. ¡Olvídate de SVN, ve a usar Git como todos los demás!


Como alguien que está en medio de cambiar entre CVS y SVN (inicialmente cambiamos todos nuestros proyectos con cvs2svn y luego decidimos que haríamos la transición solo usando svn en nuevos proyectos), estos son algunos de los problemas que hemos tenido.

  • La fusión y la ramificación son muy diferentes, y si se ramifica y fusiona con frecuencia, a menos que tenga SVN 1.5 ejecutándose en su servidor, debe saber cuándo se ramificó (esto no está muy claro en los diálogos de Tortoise SVN). Michael dice que la ramificación y la fusión son intuitivas, yo diría que después de usar CVS durante 10 años, no lo es.
  • Si está ejecutando el servidor SVN en Linux, puede ser difícil hacer que su SA se mueva a svn 1.5, ya que la instalación predeterminada 1.4.x.
  • Fusionar conflictos no es tan fácil ni tan claro (al menos para mí y mis compañeros de trabajo) en TortoiseSVN como lo es en TortoiseCVS. El enfoque de tres paneles toma tiempo para acostumbrarse y WinMerge (mi herramienta de combinación preferida) no hace una combinación de tres paneles.
  • Cuidado: muchos de los tutoriales en línea y artículos de revistas que he leído obviamente no se ramifican ni fusionan, debe configurar su repositorio principal como https://svn.yoursvnserver.com/repos/YourProject/Trunk y ramas en https://svn.yoursvnserver.com/repos/YourProject/Branches/BranchX . Puede limpiar si inicia sus repositorios en el lugar equivocado, pero esto genera confusión.

Deberías echar un vistazo a Git en lugar de SVN. Es un DVCS que es increíblemente rápido y muy potente. No es tan fácil de usar como SVN, pero está mejorando en ese sentido, y no es tan difícil de aprender.


El libro de Subversion tiene un apéndice que detalla diferencias importantes con respecto a CVS, lo que puede ayudarlo a tomar su decisión. Los dos enfoques son más o menos la misma idea, pero SVN fue diseñado específicamente para corregir fallas de larga data en CVS, por lo que, en teoría, SVN siempre será la mejor opción.


SVN tiene 3 ventajas principales sobre CVS

  • es mas rapido
  • admite versiones de archivos binarios
  • y agrega commit transaccional (todo o nada)

Una cosa que no debe pasarse por alto es el ecosistema. Estaba trabajando en una tienda CVSNT, y estaba encontrando más y más herramientas de código abierto compatibles con SubVersion por defecto.


Una de las muchas comparaciones:

http://wiki.scummvm.org/index.php/CVS_vs_SVN

Ahora, esto es muy específico para ese proyecto, pero muchas cosas se aplican en general.

Pro Subversion:

  • Soporte para renombrados / movimientos versionados (imposible con CVS): Fingolfin, Ender
  • Admite directorios de forma nativa: es posible eliminarlos y están versionados: Fingolfin, Ender
  • Las propiedades del archivo están versionadas; no más infierno de "bit ejecutable": Fingolfin
  • El número de revisión general hace que las versiones de compilación y las pruebas de regresión sean mucho más fáciles: Ender, Fingolfin
  • Comisiones atómicas: Fingolfin
  • Marcado y marcado intuitivo (basado en directorios): Fingolfin
  • Scripts de enlace más fáciles (confirmación previa / posterior, etc.): SumthinWicked (lo uso para Doxygen después de las confirmaciones)
  • Previene la confirmación accidental de archivos en conflicto: Salty-horse, Fingolfin
  • Soporte para el comando personalizado ''diff'': Fingolfin
  • Difs fuera de línea, y son instantáneos: sev

por cierto: CVSNT admite confirmaciones atómicas


también puede optar por migrar solo el último código de CVS a SVN y congelar su repositorio CVS actual. esto facilitará la migración y también puede crear sus versiones heredadas en el antiguo repositorio CVS.