En resumen, ¿cuáles son las ventajas de git y mercurial sobre la subversión?

¿Puede alguien decirme qué exageración hay sobre Git y Mercurial sobre Subversion?

En cuanto a Git, creo que hay bastantes, el mayor de los cuales (en mi opinión) es el avanzado soporte de bifurcación y fusión de Git. Git hace que sea muy, muy fácil de ramificar, y su capacidad para fusionarse en los cambios es mucho, mucho mejor que la de los SVN. Las herramientas como gitk también hacen que sea realmente muy fácil visualizar las relaciones entre las twigs en un repository de Git.

Hay muchos otros beneficios. Creo que Git tiene mejores herramientas y una mejor cadena de herramientas, y el hecho de que no requiera un repository central y un repository "desprotegido" es bueno cuando trabajas solo en proyectos pequeños. Aunque creo que la fusión y la bifurcación es el mayor beneficio.

(Mucho de eso también vale para Mercurial, aunque nunca me gustó el énfasis de Mercurial en los clones locales para "ramificar"; prefiero el método de Git para mantener todas las twigs en el mismo repository).

Puede encontrar una comparación pro git con varios sistemas de control de origen en http://whygitisbetterthanx.com/ . Lo que más me gusta de git es:

  • Es mas rapido.
  • No duplica el código fuente como lo hace SVN en el subdirectory .svn.
  • Permite comprometerse fuera de línea y luego empujar.

Git y Mercurial están distribuidos , SVN no.

Ventaja o no? Tú decides…

Digamos que tiene un proyecto personal, ¿lo pondría bajo control de versión? (Espero que diga que sí).

Si es así, entonces, ¿no prefieres algo simple? Git no requiere que configures un server ni nada de eso. Su directory de trabajo es su repository.

¿Quieres probar alguna nueva idea loca? Solo ramifícate y experimenta con él en esa twig. Si es exitoso, regrese a su twig principal y fusione. Si su idea no funcionó muy bien, solo regrese a la twig principal y elimine esa twig de crazy_idea.

¿Quieres trabajar en un crazy_idea pero también seguir desarrollando la twig master normalmente? De nuevo, no hay problema, puedes cambiar de una twig a otra y solo fusionar la idea de crazy_idea una vez que ha madurado lo suficiente.

Incluso si está en un equipo, cada desarrollador (o un pequeño grupo de desarrolladores) puede trabajar en una idea en una twig experimental antes de fusionarla con el rest del código.

Supongo que hace que el código abierto sea aún más fácil. No necesita otorgar permissions de acceso a nadie. Si alguien ha implementado una function excelente, puede solicitarle que lo retire. Si te gusta lo que ves, puedes fusionarlo.

Aquí hay una sorpresa: git es mucho más simple que svn.

De Verdad. Siempre escuché sobre el control de versiones, pero nunca lo hice. La vez que traté de poner mi código en un server svn local, fue una pesadilla; Realmente lo odiaba

Ahora, puse todo bajo git.

Esto no es tanto que uno de los lados sea "mejor" que el otro, sino que GIT, Mercurial y otros le permiten trabajar de maneras diferentes a Subversion o CVS. Subversion y CVS solo ofrecen una estructura de depósito centralizada, mientras que los demás están "distribuidos". El enfoque distribuido facilita la queueboración ad hoc entre desarrolladores, y también puede afectar la forma en que administra grupos de cambios en su propia computadora.

El método que mejor se adapta a usted es algo que usted o su organización deberán decidir.

Para mí, una cosa importante: SVN realmente no admite tags:

  1. Las tags no son simbólicas. Son paths en repos (copys COW)
  2. En SVN, un file pertenece a una label (porque la label es una copy del file). En otros sistemas y en la intuición humana: la label pertenece a un file. Es una relación opuesta.
  3. Por lo tanto, es difícil enumerar algo como: "todas las tags tienen los files". Esta información simplemente no se almacena directamente en el repository SVN.

Usted tiene el mismo range de "diferencias" entre Git y SVN que entre Git y CleaCase
(ver mi publicación sobre esos " conceptos básicos de VCS ")

  • SVN: VCS central lineal , donde twig y label son iguales (un punto en un historial lineal).
  • Git: DAG ( gráfico acíclico dirigido ) VCS distribuido , donde cada ruta del gráfico es una bifurcación y cada espacio de trabajo es el depósito completo.

Dado que Git está orientado al contenido, se fusionará mucho más eficientemente que Subversion al:

  • encontrar muy rápidamente dentro de su gráfico lo que necesita fusionarse
  • aplicando el parche correcto

Para mí, svn está funcionando bien. Para 1 – 10 desarrolladores, según la experiencia.

Está claro dónde se encuentra la versión "real": en la nube en el host networkingundante (con suerte, en algún lugar que cuide sus datos y el time de actividad). Parece que leer sobre git es que es más complicado, más grande y más capaz. Por lo tanto, si desea un flujo de trabajo "svn centralizado" (consulte el sitio http://whygitisbetterthanx.com/ ) con less forms de hacer las cosas, etc., utilice svn.

Usé CVS hasta que fue obvio dónde estaba toda la diversión. Supongo que en unos años, si cambio de nuevo, será para git? Pero en realidad, si pasa time con su sistema de control de versiones en cualquier otro día que el día en que lo configuró, entonces está haciendo algo mal.

Conceptualmente organizan revisiones como sets de cambios que le permiten ramificar / fusionar fácilmente su código. Fusionar una twig en SVN es una experiencia insoportablemente dolorosa.