¿Por qué usar SVN? Cualquier pros oculto (sobre GIT / Mercurial / Bazaar) allí?

Posibles duplicates:
¿Por qué git es mejor que Subversion?

Ya he leído mucho (aunque no lo suficiente para get la image perfecta) sobre los sistemas de control de versiones, y la conclusión obvia es que GIT es simplemente el mejor. O Bazar tal vez. O Mercurial. Pero si así era, entonces nadie usaría SVN, pero todavía lo hacen. ¿Por qué? Yo mismo no tengo una opinión propia sobre qué vcs es generalmente el mejor hasta ahora debido a la falta de experiencia con ellos. ¿Podrías compartir tus pensamientos?

Actualmente estoy manteniendo un service de control de versiones para una institución de investigación de EE. UU. No solo respaldamos SVN además de Git y Mercurial, sino también CVS.

La "característica asesina" de SVN entre nuestros usuarios es clones estrechos. Puede realizar un pago de solo un subdirectory en una jerarquía profunda, download solo los files relacionados con ese directory y aún así poder realizar confirmaciones. Git muy recientemente dio una variación similar, pero no del todo útil, en esta característica llamada cajas dispersas (ver también Pagar plots en Git 1.7.0? ). Esto le permite filtrar su tree de trabajo, pero aún así le obliga a download todo el historial de todo el proyecto, lo que puede ser prohibitivo incluso cuando los binarys grandes no están involucrados. Tenga en count que el disco es barato, y si absorbe el golpe del clon inicial de antemano, los tirones posteriores son lo suficientemente rápidos, pero esto no ayuda a las personas que hicieron un viaje antes de que se dieran count de que necesitaban clonar, y en cualquier caso incluso Las cajas dispersas de Git no le permitirán comenzar su tree de trabajo cinco niveles más abajo, por lo que se ve un poco feo.

Además, los usuarios encuentran que los files authz más fáciles de escribir que Git commit hooks, se sienten más cómodos con la syntax y metodología SVN que cualquier DVCS, y quizás lo más importante de todo es que ya tienen miles de commits de historial en SVN . Los experimentos para migrar grandes repositorys de Subversion a Git o Mercurial han arrojado resultados mixtos, y estos son científicos que intentan trabajar en sus propios proyectos, sin dedicar su time al desarrollo de un DVCS.

CVS todavía tiene seguidores por una razón similar. Imagínese, como usuario de Git, tener salidas dispersas que también le permiten reasignar arbitrariamente los files en la twig que se muestran en su tree de trabajo, usando un formatting que se versiona junto con el repository y se distribuye con cada extracción habitual, que le permite para escribir definiciones que pueden tener grupos que pueden include otros grupos, y que solo extrae los files necesarios para la location del sistema de files en un clon. Eso es sencillo en los modules de CVS, e imposible en todos los DVCS. Por todos los pecados de CVS (y créanme, somos muy conscientes de ellos, y nos desviamos de nuestro path para desalentar nuevos proyectos de CVS a less que no puedan vivir sin modules), es imposible convencer a un grupo que use esa function para migrar a otro sistema de control de versiones.

El software DVCS ha aportado algunas innovaciones increíbles, pero también faltan cosas que algunos desarrolladores dan por hecho. Asegúrese de saber de antemano cuáles son sus requisitos antes de elegir uno.

Hablando de la empresa para la que trabajo, la principal razón para usar SVN es poder mantener files binarys en formatting patentado y de gran tamaño bajo control de versiones. Específicamente, bibliotecas de miles de files CAD. En este caso, tiene sentido que el VCS esté basado en files como SVN, en lugar de basado en información textual como Git.

Dejando de lado si puede o no hacer "checkouts" superficiales con Git, o qué tan bien almacena datos binarys, el hecho es que está diseñado para rastrear líneas de información textual que flotan alnetworkingedor de un tree de código fuente. Además de hacerlo, ese model no es adecuado para rastrear bibliotecas de datos binarys.

Honestamente, esa es la única razón sólida por la que lo recomendaría: P

SVN está establecido y maduro, con herramientas igualmente maduras.

Aparte de las otras cosas que las personas mencionan (grandes cantidades de datos binarys, maduras, estables, etc.), svn se basa en un model jerárquico clásico que es fundamentalmente diferente de las revisiones basadas en parches / cambios.

Nuestra compañía tomó la decisión de quedarse con SVN porque este model se ajusta a la forma en que manejamos nuestro ciclo de publicación y ramificación. Vemos la progresión directa de las versiones como una bendición, no una perdición. Las actualizaciones se envían a un repository centralizado y se revisan ciertas revisiones consideradas "estables" en un entorno en vivo. En cualquier momento, es instantáneamente claro cuál es el estado de cada entorno para todos los involucrados. (sí, esto es posible con git.) Incluso la administración que no sabe nada sobre el control de revisiones o el desarrollo de software puede decir: "Nos gustó cómo lo tenía cuando estaba en la versión 2547".

Por otro lado, debo mencionar que uso darcs y git para proyectos en los que yo, mis amigos y mis compañeros de FOSS trabajamos juntos, ya que el model distribuido basado en parches funciona para nosotros. Podemos movernos ad-hoc a través de la línea de time del proyecto y elegir cuidadosamente todo tipo de cambios.

Realmente la ventaja de SVN, mi empresa, es su fuerte jerarquía y accesibilidad para los no progtwigdores que ya están familiarizados con los conceptos de "iniciar session" y "download".

Las personas todavía usan Subversion porque está diseñado usando el primer paradigma para sistemas de control de versiones (centralizados). Cambiar a distribuido (y basado en el cambio en lugar de en la versión) puede tomar algún time para acostumbrarse (como puede ver en la experiencia de Joel ), y muchos equipos deciden no usarlo debido a la resistencia al cambio.

Las herramientas Mercurial son bastante maduras, comparables a SVN en mi opinión.

Subversion tiene una ventaja cuando un repository contiene muchos datos binarys, que no se comprimen delta correctamente. Una extracción de Subversion solo captura la cabeza, pero git clona todo el historial, lo que puede pesar varios gigabytes. Sí, esto es bueno para el modo avión, pero recuperar el clon inicial puede llevar horas.

Mientras svn está establecido / maduro, tengo que admitir que Kenji Kina tiene razón: está viviendo en el pasado con un model de control de versiones que está desactualizado. Solo he usado svn, pero después de leer / ver a Linus y Joel hablar sobre DVCS, parece una idea shiny. Creo que Perforce hace algo similar.

Esto no significa que svn sea malo (¡funciona bastante bien!), Pero es más fácil administrar tu código y tener compromisos más frecuentes con un DVCS. Porque si rompes algo, es fácil deshacerlo. Si se ramifica, es fácil fusionarse. En general, arreglaron muchos de los principales dolores de cabeza que la mayoría tiene con Subversion.

Si nunca antes ha usado otro sistema de control de versiones, y no tiene inconveniente en implementarlo usted mismo, y escribir código (y no documentos o imágenes o cosas para las que no necesita material de text / diferencias), hágase un favor y mire en DVCS. Entonces no necesitarás ser reeducado .