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


Mi empresa está utilizando CVS como nuestro estándar de facto para el control de código fuente. Sin embargo, he oído 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.

Author: Troy Alford, 2008-08-04

12 answers

CVS solo rastrea la modificación archivo por archivo, mientras que SVN rastrea toda una confirmación 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 código 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 de la comisión atómica. 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 poner a su cliente en un estado inconsistente. Cuando se detectan temprano, estos problemas no son importantes porque sus datos todavía están ahí fuera en algún lugar, pero puede ser un dolor en un entorno estresante.

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

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

 57
Author: Vincent Robert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-10 19:12:45

Una de las muchas comparaciones:

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

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

Pro Subversion:

  • Soporte para cambios de nombre/movimientos versionados (imposible con CVS): Fingolfin, Ender
  • Soporta directorios de forma nativa: Es posible eliminarlos, y están versionados: Fingolfin, Ender
  • Las propiedades del archivo están versionadas; no más "bit ejecutable" hell: Fingolfin
  • El número general de revisiones hace que el control de versiones de compilación y las pruebas de regresión sean mucho más fáciles: Ender, Fingolfin
  • Commits atómicos: Fingolfin
  • Ramificación y etiquetado intuitivos (basados en directorios): Fingolfin
  • Scripts de gancho más fáciles (pre / post commit, etc.): SumthinWicked (lo uso para Doxygen después de las confirmaciones)
  • Evita la comisión accidental de archivos en conflicto: Salty-horse, Fingolfin
  • Soporte para custom orden 'diff': Fingolfin
  • Diffs fuera de línea, y son instantáneos: sev
 19
Author: Michael Stum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-04 14:09:54

SVN tiene 3 ventajas principales sobre CVS

  • es más rápido
  • soporta versionado de archivos binarios
  • y añade commit transaccional (todo o nada)
 14
Author: lubos hasko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-04 14:35:12

El libro de Subversion tiene un apéndice que detalla diferencias importantes con CVS, lo que puede ayudarle 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, al menos en teoría, SVN siempre será la mejor opción.

 7
Author: Mat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-04 14:14:14

Secundaré la sugerencia de Eridius de Git, pero la expandiría a los otros DRCS (Distributed Revision Control System) como Mercurial y bazaar.

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

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

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

 4
Author: Steven Dick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-18 17:04:41

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

 4
Author: engtech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-18 17:22:05

Por cierto: CVSNT soporta commits atómicos

 2
Author: David Sykes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-18 16:22:00

Como alguien que está en medio de cambiar entre CVS y SVN (inicialmente cambiamos todos nuestros proyectos con cvs2svn y luego decidimos que solo usaríamos 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 ramifica y fusiona con frecuencia, a menos que tenga SVN 1.5 ejecutándose en su servidor, debe saber cuándo ramificó (esto no está muy claro en los diálogos SVN de Tortoise). Michael dice que el ramificar y fusionar es intuitivo, 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 que su SA se mueva a svn 1.5, ya que la instalación predeterminada es la 1.4.x.
  • Fusionar conflictos no es tan fácil o tan claro (al menos para mí y mis compañeros de trabajo) en TortoiseSVN como lo es en TortoiseCVS. El enfoque de tres paneles tarda un poco en acostumbrarse y el WinMerge (mi herramienta de combinación preferida) no hace un panel de tres fusionar.
  • Cuidado: muchos de los tutoriales en línea y artículos de revistas que he leído obviamente no se ramifican y 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 comienza sus repositorios en el lugar equivocado, pero conduce a la confusión.
 2
Author: Kris Erickson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-04 17:44:16

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

 1
Author: Kevin Ballard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-06 23:09:43

CVS (Concurrent Versions System) y SVN (SubVersioN) son dos sistemas de archivos de control de versiones que son popularmente utilizados por equipos que están colaborando en un solo proyecto. Estos sistemas permiten a los colaboradores realizar un seguimiento de los cambios que se realizan y saber quién está desarrollando cuáles y si una rama debe aplicarse al tronco principal o no. CVS es la mucho más antigua de las dos y ha sido la herramienta de colaboración estándar para muchas personas. SVN es mucho más nuevo e introduce mucho de mejoras para atender las demandas de la mayoría de la gente.

 1
Author: vidy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-17 07:19:01

También puede optar por migrar solo el código más reciente de CVS a SVN y congelar su repositorio CVS actual. esto hará que la migración sea más fácil y también puede crear sus versiones heredadas en el antiguo repositorio CVS.

 0
Author: webwesen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-08 16:19:04

Bueno, algunas cosas que siento que hacen svn impresionante.

  1. La combinación SVN-crisol altassiano 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 tomar checkouts, realizar commits, 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.

 0
Author: richie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-18 14:01:16