2008-08-04 21 views
54

Mi empresa está utilizando CVS como nuestro estándar de facto para el control de código fuente. Sin embargo, escuché a mucha gente decir que SVN es mejor.¿Cuáles son las ventajas de usar SVN sobre CVS?

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 concisa comparación de los dos sistemas, señalando las ventajas o desventajas de cada uno en un entorno de desarrollo Java/Eclipse.

Respuesta

52

CVS solo rastrea la modificación archivo por archivo, mientras que SVN rastrea una confirmación completa 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 usa 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 compromiso atómico. Si bien solo lo encontré una vez, es posible que 2 personas que se comprometan juntas en CVS puedan entrar en conflicto entre sí, perder algunos datos y poner a su cliente en un estado incoherente. Cuando se detectan temprano, estos problemas no son importantes porque sus datos todavía están por ahí en alguna parte, pero puede ser doloroso en un ambiente estresante.

Y, por último, ya no se desarrollan muchas herramientas alrededor de CVS. Mientras que las herramientas nuevas y brillantes como Git o Mercurial definitivamente aún carecen de herramientas, SVN tiene una base de aplicaciones bastante grande en cualquier sistema.

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

+1

Quiero la misma respuesta para git vs subversion y git vs mercurial –

18

Una de las muchas comparaciones:

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

Ahora bien, esto es muy específica para ese proyecto, pero una gran cantidad de apllies cosas en general.

Pro Subversion:

  • Soporte para versionados renombra/mueve (imposible con CVS): Fingolfin, Ender
  • Soporta directorios de forma nativa: Es posible eliminarlos, y están versionado: Fingolfin, Ender
  • Las propiedades del archivo están versionadas; no más infierno "bit de ejecución": Fingolfin
  • número de revisión global que hace que la construcción de versiones y pruebas de regresión mucho más fácil: Ender, Fingolfin
  • Atómica se compromete: Fingolfin
  • intuitiva (basado en directorios) rama o una etiqueta: Fingolfin
  • Más fácil scripts gancho (pre/post cometió, etc): SumthinWicked (lo uso para Doxygen después commit)
  • Previene accidental comisión de archivos en conflicto: salado-caballo, Fingolfin comando
  • Apoyo a la costumbre 'diff': Fingolfin
  • diffs fuera de línea, y que son instantáneos: sev
+1

¿Qué es "fingolfin"? Buscar en Google esa palabra lo hace aún más confuso – DuKes0mE

+1

Fingolfin y Ender son solo los nombres de personas de ese foro: 'Detrás de cada" argumento "hay una lista de personas que aceptan que este argumento en particular es válido. ' – hinneLinks

7

El libro de Subversion tiene an appendix que detalla las diferencias importantes desde el CVS, que pueden ayudar a tomar su decisión. Los dos enfoques son más o menos la misma idea, pero SVN fue específicamente diseñado para corregir fallas de larga data en CVS, por lo que, al menos en teoría, SVN siempre será la mejor opción.

14

SVN tiene 3 ventajas principales sobre CVS

  • es más rápido
  • compatible con versiones de archivos binarios
  • y agrega transaccional cometer (todo o nada)
0

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

+0

Usted, señor, merece una medalla para adivinar. – altinturk

1

por cierto: CVSNT apoya compromete atómicas

2

Voy a segunda sugerencia Eridius' de Git, pero me gustaría ampliarlo a las otras DRCS (Distributed Control System Revisión) 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 son los más adecuados para los desarrolladores de potencia (y aquí ;-)).

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

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

4

Una cosa que no debe pasar por alto es el ecosistema. Estaba trabajando en una tienda CVSNT, y cada vez encontraba más herramientas de código abierto compatibles con SubVersion de forma predeterminada.

2

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

  • La fusión y la ramificación son muy diferentes, y si la rama y se funden con frecuencia, a menos que tenga SVN 1.5 que se ejecuta en el servidor tiene que saber cuando ramificada (esto no es muy claro en los cuadros de diálogo de Tortoise SVN). Michael dice que la bifurcación y fusión es intuitiva, 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, como la instalación predeterminada 1.4.x.
  • La fusión de conflictos no es tan fácil ni tan clara (al menos para mí y para mis compañeros de trabajo) en TortoiseSVN como en TortoiseCVS. El enfoque de tres paneles lleva tiempo acostumbrarse y el WinMerge (mi herramienta de fusión preferida) no hace una fusió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 y se funden, se recomienda configurar el 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 genera confusión.
0

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

0

Bueno, algunas cosas que siento hacen a svn awesome.

  1. La combinación crisol SVN-Altassian es un método muy superior de las revisiones y controles de calidad
  2. una mejor gestión de los conflictos y se fusiona
  3. Es obvio que es más rápido para la toma de las cajas, la realización de confirmaciones, etc.
  4. El confirmación atómica problema - es posible que 2 personas que cometen juntos en CVS pueden entrar en conflicto entre sí, la pérdida de algunos datos y poner su base de código en un estado incoherente

Migra se puede hacer fácilmente en unas pocas horas usando cvs2svn.

Cuestiones relacionadas