Pregunta

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

¿Fue útil?

Solución

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 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 a tiempo, estos problemas no son importantes porque sus datos todavía están en algún lugar, pero pueden ser molestos en un entorno estresante.

Y finalmente, ya no se desarrollan muchas herramientas en torno a CVS.Si bien las nuevas y brillantes herramientas 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 ahora 7 años.¡Olvídate de SVN, usa Git como todos los demás!

Otros consejos

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 profesional:

  • Soporte para cambios/movimientos de versiones (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 infiernos de "bits ejecutables":fingolfin
  • El número de revisión general facilita mucho el control de versiones y las pruebas de regresión:Ender, Fingolfin
  • Confirmaciones atómicas:fingolfin
  • Ramificación y etiquetado intuitivos (basados ​​en directorios):fingolfin
  • Secuencias de comandos de enlace más sencillas (compromiso previo/posterior, etc.):SumthinWicked (lo uso para Doxygen después de las confirmaciones)
  • Previene la confirmación accidental de archivos en conflicto:Caballo salado, Fingolfin
  • Soporte para el comando 'diff' personalizado:fingolfin
  • Diferencias sin conexión y son instantáneas:sev

SVN tiene 3 ventajas principales sobre CVS

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

El libro Subversion tiene un apéndice que detalla diferencias importantes con respecto a CVS, lo que puede ayudarle a tomar una 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.

Apoyaré la sugerencia de Git de Eridius, pero la expandiría a otros DRCS (Sistema de control de revisión distribuido), como Mercurial y bazar.

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 se adaptan mejor a los desarrolladores de energía que hay (y aquí ;-)).

Por otra parte, ¿qué no ¿Qué hace CVS actualmente por usted?Según su pregunta inicial, realmente no tiene ninguna: "CVS apesta en esto, ¿qué podría usar en su lugar?"

Hay que sopesar los costos de cualquier posible migración con los beneficios.Para un proyecto existente, creo que sería difícil de justificar.

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

por cierto:CVSNT admite confirmaciones atómicas

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 usando solo svn en proyectos nuevos), estos son algunos de los problemas que hemos tenido.

  • La fusión y la bifurcación son muy diferentes, y si bifurca y fusiona con frecuencia, a menos que tenga SVN 1.5 ejecutándose en su servidor, debe saber cuándo realizó la bifurcación (esto no está muy claro en los cuadros de diálogo de Tortoise SVN).Michael dice que la bifurcació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 resultar difícil lograr que su SA pase a svn 1.5, como 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.Es necesario acostumbrarse al enfoque de tres paneles y WinMerge (mi herramienta de combinación preferida) no realiza una combinación de tres paneles.
  • Tener cuidado:Muchos de los tutoriales en línea y artículos de revistas que he leído obviamente no se ramifican ni se fusionan, debes configurar tu repositorio principal como https://svn.yoursvnserver.com/repos/YourProject/Trunk y ramas en https://svn.yoursvnserver.com/repos/YourProject/Branches/BranchX .Puede realizar una limpieza si inicia sus repositorios en el lugar equivocado, pero genera confusión.

Deberías echar un vistazo a git en lugar de SVN.Es un DVCS 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 eso difícil de aprender.

CVS (Sistema de versiones concurrentes) y SVN (SubVersioN) son dos sistemas de archivos de control de versiones que utilizan popularmente los equipos que colaboran 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ál y si una rama debe aplicarse 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 mucha gente.SVN es mucho más nuevo e introduce muchas mejoras para satisfacer las demandas de la mayoría de las personas.

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

Bueno, algunas cosas que creo que 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 entre sí, perdiendo algunos datos y poniendo su código base en un estado inconsistente.

La migración se puede realizar fácilmente en unas pocas horas utilizando cvs2svn.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top