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




svn tortoise (9)

El libro de Subversion tiene un apéndice que detalla las diferencias importantes de CVS, que pueden ayudarlo 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.

Mi empresa está utilizando CVS como nuestro estándar de facto para el control de fuentes. Sin embargo, escuché 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 concisa comparación de los dos sistemas, señalando las ventajas o desventajas de cada uno en un entorno de desarrollo Java / Eclipse.


SVN tiene 3 ventajas principales sobre CVS

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

CVS solo realiza un seguimiento de las modificaciones 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 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 finalmente, 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 ahora. ¡Olvídate de SVN, ve a usar Git como todos los demás!


Por cierto: CVSNT admite confirmaciones atómicas


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


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 del compromiso atómico: es posible que 2 personas que se comprometen juntas en CVS puedan entrar en conflicto, perder algunos datos y poner su base de código en un estado inconsistente

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


Responderé a la sugerencia de Git 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 (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 hace actualmente CVS por usted? De su pregunta inicial, realmente no tiene ninguna, "CVS apesta con esto, ¿qué podría usar en su lugar?"

Tienes 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.


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.


Una de las muchas comparaciones:

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

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

Subversión Pro:

  • Soporte para cambiar el nombre de versiones / movimientos (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 sencillas: Ender, Fingolfin
  • Compromisos atómicos: Fingolfin
  • Bifurcación y etiquetado intuitivos (basados ​​en directorios): Fingolfin
  • Scripts de enlace más fáciles (pre / post commit, etc.): SumthinWicked (lo uso para Doxygen después de los commits)
  • Evita el commit accidental de archivos en conflicto: Salado-caballo, Fingolfin
  • Soporte para el comando personalizado 'diff': Fingolfin
  • Diffs sin conexión, y son instantáneos: sev




cvs