que informatica español control svn git version-control mercurial bazaar

svn - informatica - mercurial vs git español



Popularidad de Git/Mercurial/Bazaar contra el cual recomendar (11)

A juzgar por el número de preguntas en este sitio para estos tres sistemas de control de versiones distribuidas, parece que Git tampoco

  1. es más popular, o
  2. es más difícil (por lo tanto, requiere más preguntas), o
  3. tiene más características (por lo tanto, requiere más preguntas).
  1. Acerca de la popularidad de SCM: consulte la siguiente pregunta de StackOverflow: ¿Existe alguna estadística de popularidad / uso disponible para los sistemas RCS / SCM / VCS gratuitos? . Aquí tenemos preguntas como qué conjunto de archivos ignorar usar para un tipo específico de proyecto, que son independientes de SCM, pero se les pide Git (y usar la etiqueta ''git''), porque es la persona que hizo el uso de la pregunta.

  2. Acerca de que Git es más difícil (y, por lo tanto, tiene más preguntas sobre SO), ciertamente Git tiene una curva de aprendizaje más pronunciada. También utiliza pocos conceptos (bastante) únicos, como el área de ensayo (el índice), o todas las ramas son iguales, que son responsables de su poder, pero puede ser difícil hacerlo bien al principio (especialmente si uno proviene de otro SCM) . Además, la interfaz de usuario de Git no es completamente uniforme (aunque mejora), porque se cultivó en lugar de desarrollarse; que es responsable de su potencia, pero puede conducir a una interfaz de usuario que no es óptima.

  3. Acerca de que Git tiene más características : debería verificar cuántas preguntas SO son sobre características avanzadas / poco comunes de Git. Sin embargo, debe tener en cuenta que los proyectos de fuente abierta toman ideas entre sí, o tienen características similares desarrolladas independientemente: un ejemplo sería encontrar errores bisectando (buscando) la historia de la confirmación que introdujo el error que (hasta donde yo sé) desarrollado primero en Git, y luego implementado como complemento en Bazar, y primera extensión y funcionalidad principal actual en Mercurial. Otro sería interactivo seleccionando fragmentos de cambios para comprometer, inspirados por el comportamiento de Darcs. Otra sería la idea del paquete de Git, tomada de un concepto similar en Mercurial.

  4. Otra posibilidad de fuente de mayor número de preguntas de SO podría ser la falta de una buena documentación ... aunque mejora hoy en día con el Manual de usuario de Git (distribuido con Git) y el Libro de comunidad de Git (que se encuentra en la página de inicio de Git). Todavía hay este meme persistente de que Git tiene una documentación peor que, digamos, Subversion con su Control de versiones con Subversion (también conocido como svnbook ) y Mercurial: The Definitive Guide (también conocido como hg-book ) ... y la gente no lee documentación antes de hacer preguntas sobre StackOverflow, a veces.

No es del todo satisfactorio tener tres productos de código abierto competidores pero en gran parte equivalentes para elegir. Personalmente utilizo Git y estoy bien con los otros dos. Pero cuando se trata de recomendar un sistema sobre los otros, me gustaría preguntar: ¿podemos comenzar a recomendar uno con seguridad todavía?

Bueno, Git y Mercurial se desarrollaron de forma independiente a partir de casi la misma fecha en la respuesta de la licencia libre de finalización para BitKeeper para su uso por los desarrolladores del kernel de Linux, como un reemplazo de la misma. Subversion estaba fuera de cuestión como SCM centralizado, con falta de soporte (entonces) en el núcleo para el seguimiento de fusión; esto lo hizo completamente inadecuado para el modelo de desarrollo ampliamente distribuido del kernel de Linux. Bazar probablemente era demasiado lento (al menos entonces), y un poco centralizado (supongo).

Git es más poderoso (en mi opinión), Mercurial es más simple (en opinión de las personas) y un poco más portátil (Python); Git es programable y está basado en un modelo de datos que permite reimplementaciones independientes (por ejemplo, JGit, git escrito en Java), mientras que Mercurial tiene enlaces de Python para escribir extensiones, y se basa principalmente en API que permite el cambio de formato de repositorio subyacente (revlog - revlog-ng ) ... pero esa es solo mi suposición. Llenan nichos ligeramente diferentes.

Además, ¿no se considera una buena opción? Tenemos KDE y tenemos GNOME y XFCE (y otros administradores de ventanas y entornos de escritorio); tenemos Emacs y Vim (y otros editores de programadores); tenemos distribuciones basadas en rpm (por ejemplo, Fedora Core, Mandriva, SuSE) y basadas en Deb (Debian, Ubuntu) y basadas en tgz (Slackware) y basadas en fuente (Gentoo); tenemos KWord, AbiWord y OpenOffice.org ... y tenemos Git, Mercurial y Bazaar.

A juzgar por el número de preguntas en este sitio para estos tres sistemas de control de versiones distribuidas, parece que Git tampoco

  1. es más popular, o
  2. es más difícil (por lo tanto, requiere más preguntas), o
  3. tiene más características (por lo tanto, requiere más preguntas).

O muy probablemente una combinación de los tres. (Digamos que la popularidad en este sitio equivale a popularidad en general). Estos son los números:

| Jun 2009 | Jul 2010 | Jul 2011 | Jul 2012 | Jul 2013 | Jul 2014 | Jul 2015 | Jul 2016 | Jun 2017 --------------------------------------------------------------------------------------------------------------- [svn] | 2353 | 5323 | 9028 | 12687 | 15587 | 18846 | 21209 | 23037 | 24692 [git] | 726 | 3725 | 9225 | 17523 | 27862 | 41478 | 55315 | 71056 | 86958 [mercurial] | 169 | 1120 | 2765 | 4221 | 5230 | 6030 | 6651 | 7134 | 7524 [bazaar] | 50 | 159 | 252 | 351 | 425 | 483 | 506 | 525 | 534

No es del todo satisfactorio tener tres productos de código abierto competidores pero en gran parte equivalentes para elegir. Personalmente utilizo Git y estoy bien con los otros dos. Pero cuando se trata de recomendar un sistema sobre los otros, me gustaría preguntar: ¿podemos comenzar a recomendar uno con seguridad todavía?

Comentarios de mediados de 2009 : La reciente popularidad histórica de Subversion se refleja claramente en el número de preguntas, que indican al menos un pequeño vuelco de las escalas hacia Git sobre el Mercurial o Bazar.

Comentarios de mediados de 2010 : observe ese gran aumento relativo en los números de Mercurial. Obviamente, solo dos puntos de datos no son suficientes para mostrar una tendencia, pero parece que Git y Subversion están muy atrincherados, Mercurial ha experimentado un gran crecimiento y Bazaar se ha mantenido relativamente tranquilo.

Breve comentario, mediados de 2011 : ¿Podemos simplemente llamar a Git el ganador? :) No, acepto el argumento de que el número de preguntas no es equivalente a la popularidad. Sin embargo, los números son fuertes.


Actualización de noviembre de 2011:

Git ahora es mucho más maduro en comparación con 2009:

  • ahora es compatible con http inteligente , lo que significa que puede ofrecerle a su cliente el protocolo https para extraer / clonar y enviar , con autenticación capaz de interactuar con un LDAP (importante para el usuario en una empresa)
  • Ahora existe una capa de autorización madura con Gitolite , lo que significa que puede proporcionar aislamiento para el repositorio "confidencial" (una vez más, importante para grandes empresas).
  • El soporte de Windows que ya estaba allí en 2009, sigue siendo fuerte, y TortoiseGit es bastante estable
  • La integración con IDE como Eclipse está en progreso (la mayoría de los proyectos de Eclipse están ahora en GitHub)

Sin embargo, instalar Git en un entorno centralizado no es trivial:
Consulte " Sistemas de control de versiones distribuidas y Enterprise: una buena combinación ".

Un punto que constantemente se pierde es:

son diferentes en su naturaleza.

  • SVN es un sistema de REVISIÓN (¡almacena sucursales y etiquetas solo a través de copias baratas! El soporte de Merge no es muy eficiente), y está centralizado.
  • Mercurial o bazar son FILE VCS (almacenan versiones de archivos ) y se distribuyen.
    Arne Babenhauserheide lo enmienda para Mercurial al señalar que el modelo de historial de Mercurial rastrea los cambios de contenido , con rutas de archivos reutilizadas en la capa de almacenamiento para optimizar el acceso al sistema de archivos.
  • Git, y eso es muy difícil de entender, es un CONTENIDO VCS (almacena delta de contenido , no el archivo en sí: dos archivos con el mismo contenido se almacenarán solo una vez)

Eso significa:

  • si tiene un flujo de trabajo de fusión simple, en una única ubicación de desarrollo, quédese con SVN
  • si tiene varios lugares de desarrollo, un VCS distribuido es más adecuado.
  • si tiene un flujo de trabajo de fusión complejo , cualquier VCS moderno es mejor que SVN, que tiene dificultades para mantener la información de fusión en los lugares correctos durante años. Luego depende de las herramientas (Mercurial tiene un soporte de Windows más avanzado, por ejemplo)
  • si tiene principalmente archivos de texto y archivos binarios no demasiado grandes, Git es excelente, siempre que conozca sus límites .

Bueno, la razón por la que git tiene tantos usuarios es que el kernel de Linux lo usa, así que si quieres hacer un desarrollo de Linux, usas git.

Dado que muchas personas están involucradas con git, recomendaría usar git, simplemente debido a la gran base de usuarios. De hecho, los números que muestra arriba son una clara señal de esto.

En cuanto a la dificultad, todo el control de versiones es difícil, especialmente el tipo distribuido. SVN y CVS no fueron exactamente fáciles (al menos para mí) a primera vista. Esto es solo parte de la curva de aprendizaje necesaria para acostumbrarse a un sistema de control de versiones.

EDITAR: ya que agregó una referencia de subversión, pensé que lo abordaría. Creo que la mayoría de la gente usará svn porque tiene todo tipo de interfaces guapas para él. En general, las personas odian usar la línea de comando, incluidos algunos desarrolladores. git generalmente tampoco funciona muy bien en Windows (o al menos no tan a la perfección). Dado que muchas personas están en Windows, esto elimina la cantidad de usuarios potenciales.

Además, creo que los conceptos de SVN son un poco más fáciles de comprender ya que svn usa un repositorio central en lugar de un sistema distribuido. Es más fácil entender: "Aquí está la gran montaña de código, por favor agregue su código aquí", que "Aquí hay un código, el mío podría ser diferente al suyo, el suyo, pero puede agregar algo si lo desea".

En mi opinión, svn tiene un sistema mucho mejor de configuración de la documentación. La documentación de git apunta a un nivel de conocimiento un poco más alto (del programa, no de la inteligencia de un programador) y tiene sentido después de usar el sistema, pero cuando comienza, parece un montón de gobbeldy-gook.

En general, creo que svn es y siempre será más frecuente porque sus conceptos operativos generales son más fáciles de entender, las herramientas son fáciles de usar y tiene un maravilloso soporte en Windows.

Sin embargo, permítanme terminar con mis dos centavos finales y decir que prefiero git porque creo que es mucho más poderoso que cualquier otro sistema que haya usado. Escalar la curva de aprendizaje definitivamente vale la pena una vez que comienzas a entender mejor el programa.


Canonical (Ubuntu) rastrea el uso del paquete de software para su distribución, por lo que no es necesario depender de los conteos de los problemas de Stack Exchange para medir la popularidad. Sin embargo, como han señalado otros, esto solo hace un seguimiento de los usuarios de Ubuntu y utiliza Canonical (Ubuntu) y recomienda bzr (sesgo de muestra). Sin embargo...

2011 2011 2011 Package Aug 3 Sep 29 Dec 9 Change ------ ------ ------ ------ ------ git-core 3647 3402 3236 -11% bzr 4975 5286 6070 +22% mercurial 3411 3387 3461 +1%

La disminución de votos para el paquete git-core me hace pensar que he hecho algo mal, como grep ed el nombre de paquete incorrecto de la tabla de popularidad de ubuntu. O tal vez incluso este conteo de "votos" está relacionado con las instalaciones y no con el uso real del software.

Aquí hay algunos datos históricos para tendencias. Utilicé las estadísticas <install> lugar de <vote> de Ubuntu en esta tabla, pero muestra un crecimiento acelerado en Bazaar y Mercurial a partir de 2011. No obstante, bzr estaba detrás de git en 2011, pero las estadísticas recientes de 2011 muestran que pasó git en total instancias instaladas (en Ubuntu).

June Aug Dec Growth Oct Growth 2010 2011 2011 2013 ---- ----- ---- ---- ------ ---- ------ git 94k 159k 171k 80% 165k -3.5% bzr 52k 121k 135k 160% 170k 26.0% hg 36k 68k 75k 110% 95k 26.7%

Discalaimer: utilicé bzr en Ubuntu hasta 2012 cuando trabajé en equipos que usaban git exclusivamente. Bzr bien con todos los demás VCS, lo que le permite utilizar una sintaxis de línea de comandos bzr consistente e intuitiva. Mi cambio a git fue por razones sociales más que técnicas.



Desde el origen de la codificación social con Git en GitHub , Git parece haber atraído a muchos seguidores.


En mi experiencia, a juzgar por el número de preguntas, obvia la comparación con git y Mercurial. El motivo es doble:

  1. Eche un vistazo a la hg update --help versus git checkout -h y git --help checkout . Con Mercurial rara vez encuentro preguntas que no responden algunas miradas de hg help .

  2. Consulte la Wiki de Mercurial : si necesita ayuda , es probable que la encuentre allí , incluidos muchos Consejos y trucos: http://mercurial-scm.org/wiki/TipsAndTricks


Normalmente no publico pero ...

He intentado git, bzr y algunos otros que olvido y encontré que bzr tiene un punto muy muy débil. Para archivos grandes, insiste en cargar todo el archivo en la memoria. Esto crea problemas para grandes binarios.

Git fue mucho mejor en ese sentido. En cuanto a la dificultad Yo uso git en windows desde el git bash. Funciona muy bien y se aprendió en menos de una semana (eso incluyó el trabajo real y la experimentación con otros VCS)



Yo uso y recomiendo mercurial

  • en lugar de subversión porque admite el desarrollo distribuido. Puedo trabajar en varias máquinas y comprometerme localmente. No se puede hacer esto con subversión, al menos no sin saltos mortales como repositorios adicionales
  • en lugar de bazar porque el soporte de ventanas de bazar es ... bueno.
  • en lugar de git porque es a) más fácil de aprender y usar y b) el soporte de windows es mucho mejor

[NOTA: con el lanzamiento de Subversion 1.7, el primer párrafo de mi respuesta a continuación está desactualizado, ya que Subversion ahora solo crea una única carpeta ".svn" en la carpeta base, similar a las otras ahora.]

Una ventaja de cualquiera de las tres sobre la subversión es que no crea un equivalente de una carpeta ".svn" en cada carpeta del proyecto. Usualmente solo tiene uno (".hg", ".bzr" o ".git") en la carpeta base. Solo eso puede ser una buena razón para usar uno de ellos a través de svn incluso si está utilizando un modelo de repositorio centralizado. (Aparte: de hecho, a menudo uso svk como mi cliente svn cuando uso un repositorio svn solo para esta característica (solo linux, svk no es bueno en Windows)).

Por supuesto, una de las ventajas de la subversión es que no tiene que verificar todo el proyecto si solo necesita una de sus subcarpetas.