Quiero elegir un sistema de control de versiones para mi empresa. Hasta ahora sé que tengo Git, Subversion y Mercurial.
En estos días veo que Git es el más utilizado, así que me pregunto: ¿habría alguna razón específica para seguir usando Subversion, o debería ir directamente a Git?
version-control
git
svn
usuario1179459
fuente
fuente
Respuestas:
SVN no está muerto en absoluto. Todavía tiene un uso extremadamente amplio, y no irá a ningún lado en el corto plazo. SVN es mucho más simple de usar que el control de versión distribuido, especialmente si en realidad no está ejecutando un proyecto distribuido que necesita control de versión distribuido.
Si solo tiene un repositorio central (que es todo lo que su empresa necesitará si todavía son lo suficientemente pequeños como para sobrevivir sin control de fuente hasta ahora), es mucho más simple usar SVN para interactuar con él. Por ejemplo, con SVN puede extraer cambios del repositorio o confirmar sus cambios locales en él, con una sola operación, mientras que HG y Git requieren dos o tres pasos para hacer el trabajo equivalente.
Y con las revisiones recientes, SVN ha solucionado muchos de los problemas de rendimiento que hicieron que las personas prefirieran HG y Git. Es significativamente más rápido ahora que hace un par de años, y en este punto, realmente no hay una buena razón para mirar HG o Git para su proyecto a menos que realmente necesite las características avanzadas de control de versiones distribuidas.
fuente
Las herramientas del cliente aún no se han mencionado. Ciertamente puede hacer todo con un script de línea de comandos, pero tener la integración de la GUI puede ser un verdadero aumento de la productividad.
Trabajamos principalmente con Visual Studio; La integración en el IDE es definitivamente mejor con SVN que con Git en este momento. Esto puede cambiar en el futuro, pero ciertamente consideraría esto en su decisión tanto como las funciones de control de versiones.
Al igual que todo lo demás, un sistema de control de versiones no es un objetivo en sí mismo, solo una herramienta para llevarte a donde vas. Elija el que lo llevará más rápido según su situación.
fuente
Soy fanático de Git. Recientemente tuve que admitir que uno de los inconvenientes de Git es que identifica versiones con hashes como opuestos a los números de lanzamiento de svn. El número de versión se puede transmitir más fácilmente por teléfono o algo así.
Y ese es el único profesional que puedo imaginar. Si realmente desea confiar en esa característica, puede tenerla en un Bazar VCS distribuido y / o centralizado . En Git hay etiquetas que pueden servir para ese propósito.
De todos modos, no podía imaginarme desarrollar sin un cambio rápido de rama y escondite. Estas dos características solo superan a SVN, donde, hasta donde recuerdo, la misma tarea requería crear y verificar un árbol completo en directorios separados para lograr el mismo objetivo.
Las llamadas "funciones avanzadas de control de versiones distribuidas" vienen con el tiempo, y no tiene que aprenderlas desde el principio. No les tengas miedo. Están aquí para ayudarlo, no para interferir. Y no hay problema para configurar un repositorio central para un DVCS.
fuente
Con SVN, puede retirar fácilmente partes de un repositorio hasta el nivel de carpeta, mientras que con git, obtiene todo el repositorio, incluido todo el historial.
Dependiendo de la situación, esto puede tener algunas ventajas para SVN
(esto también tiene algunos grandes inconvenientes, como la basura ".svn" oculta hasta el árbol de carpetas).
fuente
"Si tiene una tarea que se puede hacer en seis horas, es mejor escribir una herramienta que lo haga en 20 minutos, incluso si la creación de la herramienta lleva seis horas".
El control de versión distribuido es una bestia diferente para abordar. Requiere un aprendizaje sustancial para cada desarrollador. Si tiene el búfer para acomodar el proceso de aprendizaje para cada desarrollador, debe pasar a un buen sistema de control de versiones distribuido. Una vez que finaliza la fase de aprendizaje, el Control de versiones distribuido es mucho mejor que el Control de versiones centralizado.
El Control de versiones distribuido parece ser una eventualidad. Está aquí para quedarse por mucho tiempo, es mejor que nos adaptemos más temprano que tarde. Recuerdo la misma discusión cuando SVN era nuevo y la gente estaba acostumbrada a CVS, se dieron muchos argumentos para no usar SVN, pero finalmente SVN se convirtió en el sistema de control de versiones más popular.
Si la compañía está bien establecida con una gran cantidad de código fuente en el sistema de control de versiones existente, pasar a un nuevo sistema es una gran tarea, pero si la compañía es pequeña o está comenzando, pasar a un nuevo control de versiones es muy fácil. Pero si se apega a un control de versión anterior (en una nueva configuración), llegará al cuello de botella en algún lugar en el futuro en el que tendrá que planificar eventualmente una migración de control de versión de todos modos.
He visto muchos comentarios pro SVN, pero todos tienden a ser de la naturaleza "SVN no es malo" en lugar de "SVN es mejor". Por lo tanto, recomiendo encarecidamente que elija un Control de versión distribuido (como Git) para su proyecto.
EDITAR Ventajas de GIT sobre SVN
No se requiere un servidor dedicadoEn realidad, ambos se pueden usar sin un servidor.Alguien mencionó las herramientas (para Visual Studio) como una razón para apegarse a SVN. http://gitscc.codeplex.com/ proporciona soporte GIT para Visual Studio.
fuente
Once the learning phase is over Distributed Version Control is much better than Centralized Version Control.
Estoy completamente en desacuerdo con esto. Puede tener algunos beneficios percibidos en algunas circunstancias, pero algo tan simple como el número de versión en ser legible para humanos es un beneficio masivo en muchas organizaciones.Aparte del soporte de herramientas en IDEs (que no uso), en realidad no, no. Por supuesto, SVN puede ser más familiar, pero esa es la única razón, y he encontrado que Hg y Git son muy fáciles (y muy rápidos) de aprender.
Sí, existen todas esas guías complejas que describen cómo Git es trivial una vez que entiendes que las ramas son solo endofunctores homeomórficos que mapean submanifolds de un espacio de Hilbert. 1
No entiendo eso ¿Pero sabes que? No importa. No necesitas saber nada de eso para usar Git.
En su mayor parte, Git y Hg son fáciles de usar y tienen ventajas definitivas sobre SVN. El elefante en la habitación, por supuesto, se está ramificando: las ramas solo funcionan en Git y Hg. Por el contrario, en SVN son dolorosas en el mejor de los casos y rotas en el peor (fusionando varias cabezas).
Por supuesto, todavía puedes usar SVN. También puedes seguir usando Windows XP. Sin embargo, la mayoría de los usuarios que han probado ambos están de acuerdo en que una de las alternativas es muy superior.
1 Sí, entiendo que esto es una broma. Yo creo que.
fuente