tag - qué es un branch en git
Git, Hg o Bzr-¿Qué recomendar a un nuevo usuario? (8)
Tengo algunos amigos que están potencialmente interesados en aprender a usar un sistema de control de versiones para nuestras próximas tesis principales (documentos de látex y varias programaciones). No estoy hablando de algo enorme y complicado aquí, solo para usarlo como respaldo, mirando revisiones antiguas y algunas ramificaciones y fusiones básicas.
Sin embargo, creo que es una buena idea elegir uno que sea algo fácil de aprender para un principiante. Entonces, la pregunta es, ¿qué sistema de control de versiones recomendaría a alguien que es nuevo en esas cosas para aprender?
Personalmente, he estado usando un poco Git y Mercurial y, de momento, creo que me estoy inclinando hacia Mercurial. Aunque no he probado Bazar.
Hasta ahora, estas son mis impresiones sobre las características adecuadas para nuevos usuarios:
Mercurial
Pros:
- Numeración de revisión
- Fácil de pagar un compromiso anterior, trabajar en él y fusionarlo en
- Fácil fusión directamente con una herramienta de combinación
- Fácil ramificación (?)
- Buenos plugins como glog
Contras:
- Las ramas y los marcadores se pueden usar para lo que Git llama ramificación: podría ser un poco confuso.
- No proporciona mucha información sobre lo que se hizo / mal cuando se ejecuta un comando
Git
Pros:
- Control total (da la impresión de que al menos)
- Ayuda detallada e información cuando algo sale mal
Contras:
- Algunos conceptos difíciles (como el área de preparación)
- Algunas operaciones de bifurcación pueden ser un poco difíciles
Bazar
No lo he intentado ...
¿Qué piensas? Por favor, siga las buenas pautas subjetivas aquí al responder.
Transmitiré mi experiencia con Git y Mercurial, en ambos casos comenzando desde cero.
Decidí mover mi equipo (5 desarrolladores principales y disciplinados, incluyéndome a mí) de ClearCase (UCM, pero todos habían usado tanto ClearCase base como UCM durante varios años). Después de haber analizado los 3 de Mercurial, Git y Bazaar, me decidí por Mercurial (influenciado en gran medida por PEP 374 ).
En una semana me sentí lo suficientemente seguro como para introducir a Mercurial en los procesos del equipo y la gente comenzó a utilizarlo. La dificultad más grande era asegurarme de poder seguir impulsando los cambios en sentido ascendente a ClearCase. Todo el equipo lo adoptó rápidamente y notamos un cambio inmediato en la forma en que trabajamos.
Usamos un desarrollo muy ramificado (denominado branch por tarea), esencialmente heredado de cómo funcionaba ClearCase, pero descubrimos que era una buena forma de que el equipo funcionara (nota: a muchos usuarios de Hg no les gustaría esta estrategia de bifurcación). Un desarrollador trabajaría en una tarea y se la enviaría a alguien para su revisión. Mientras que antes el revisor realizaba y tomaba notas, etc., y las enviaba al desarrollador original, con Mercurial descubrimos que simplemente cambiaríamos ramas, revisaríamos, luego obtendríamos el autor y haríamos los cambios juntos en el entorno del revisor (programación de pares ) y los comprometen a la misma rama nombrada.
Todo, el tiempo total para que todo el equipo se ponga al día (conmigo como mentor empezando desde cero) fue de aproximadamente 2 semanas.
Mi experiencia con Git es más reciente, solo comencé a usarla hace aproximadamente 2 meses (y por lo tanto ya tenía una experiencia considerable con Mercurial). Sin embargo, comencé a usarlo hace aproximadamente 2 meses, y recién ahora estoy empezando a sentirme cómodo con él. Lo más importante que me hace sentir incómodo con Git es que Git supone que vas a editar el historial y lo hace fácil . Debo leer regularmente partes del manual / ayuda de git para verificar que estoy haciendo las cosas "bien". Encuentro que la rama local + el sistema de seguimiento remoto son muy extraños y poco intuitivos, mientras que la bifurcación en Mercurial es increíblemente simple (para saber dónde estás en comparación con otro repositorio, simplemente pregúntale).
El equipo con el que estoy trabajando se siente de la misma manera. Git fue elegido para el VCS, pero ahora me han pedido que nos cambie a Mercurial al final de la fase de trabajo actual.
Las últimas personas a las que les enseñé control de revisión desde cero han estado con git (incluida mi hija cuando tenía 12 años). También les enseñé a los nuevos usuarios mercurial.
Para alguien sin experiencia en el control de revisiones, ambos fueron igualmente fáciles. Para alguien quebrado por subversión o CVS, el git fue inicialmente más difícil (aunque dependiendo de su voluntad de comprender los fundamentos vs. ciegamente hacer que las cosas funcionen, git fue bastante fácil).
Basado en eso, y algunas de las otras respuestas aquí y mi propio sesgo personal, creo que git es la mejor respuesta. Hay casi dos millones de repositorios git en github solo. No va a ir a ningún lado pronto.
Lo que asumió que era uno de los profesionales de Mercurial - numeración de revisión - es considerado una desventaja por muchas personas. Y lo que suponía que era una desventaja: área de preparación; siendo un concepto difícil, muchas personas lo consideran una ventaja.
Entonces esto no es tan simple.
Pero si me preguntan: Mercurial es James Bond, como lo llamó uno de los bloggers, es elegante y de nivel superior a git, al menos en la superficie. Además, sus comandos son muy parecidos a los comandos de subversión, por lo tanto, los nuevos usuarios que son conversiones svn pueden aprender Mercurial mucho más rápido que git.
Me gusta Mercurial. Soy parcial. También me gusta Perforce, pero no es tan abierto.
No creo que tus amigos noten una gran diferencia con ninguno de los tres VCS. Si solo se utiliza como una copia de seguridad simple con una pequeña cantidad de ramificación (probablemente no conflictiva de todos modos), no importa qué herramienta elijan. Los tres pueden realizar tareas simples sin que el usuario tenga que saber nada especial.
Especialmente si las personas son completamente nuevas en el control de versiones, no hay una razón real para elegir una herramienta sobre la otra. Si bien todos ellos usan conceptos ligeramente diferentes (probablemente Git sea el más especial), difícilmente lo notará un nuevo usuario sin experiencia con las otras herramientas.
La distribución de tus pros y contras listados (que no son realmente ciertos por cierto) me dice que tienes más o más experiencia con Mercurial que con Git. Como tal, recomendaría usar Mercurial, porque en el caso de que sus amigos necesiten ayuda, pueden preguntarle , y podrá darles una buena respuesta basada en su propia experiencia.
Creo que eso es más importante que la base de usuarios general en Internet o en alguna página de ayuda (por cierto, la gran cantidad de preguntas sobre git también podría significar que git es más confuso para muchas personas, lo que probablemente sea cierto).
Otro factor para decidir sobre una herramienta para usuarios inexpertos, especialmente cuando es posible que no lo necesiten tanto en sus vidas, podría ser la disponibilidad de una interfaz gráfica de usuario sencilla. Incluso podría haber una buena integración con su editor TeX, lo que los haría elegir una herramienta sobre otra.
Recomiende el que conoces mejor. Si vas a recomendar uno a tus conocidos, deberías estar dispuesto a tomar la primera oportunidad para responder sus preguntas. Mercurial, Git y Bazaar son geniales y muy superiores a nada. Si alguna vez encuentran una deficiencia, pueden probar una de las otras, pero honestamente, para empezar, "¡Machts nichts!"
Git.
Me gusta mucho Mercurial y fue mi introducción a DVCS, pero la realidad es que Git se está convirtiendo en el estándar de la industria. Cuando hablo con mis amigos sobre lo que están usando en el trabajo, todos están usando Git para nuevos proyectos, migrando proyectos existentes a Git, o deseando poder usar Git en el trabajo si lo han usado para proyectos personales pero no pueden hacer que las personas cambien en el trabajo. Nadie habla de Mercurial o Bazar, nunca. Solía ser la única persona que conocía que habló de Mercurial, pero salté al carro de Git cuando quedó claro que Git es lo que los desarrolladores profesionales usarán en el futuro inmediato. La gente todavía habla de SVN y muy ocasionalmente de CVS, pero eso se debe a que sus proyectos comenzaron hace años y aún no han migrado, nadie habla de usarlos para un nuevo desarrollo.
Si ustedes planean obtener trabajos como desarrolladores después de terminar su tesis, conocer las herramientas que la gente realmente usa es lo mejor para usted.
No es una de sus opciones, pero solo quiero agregar que Perforce es terrible, nunca debió haberse desarrollado, y es el VCS más molesto e invasivo que pueda imaginarse.
Las etiquetas en deberían darle una buena indicación del apoyo de la comunidad detrás de esto. Actualmente los conteos de preguntas son:
- Git : 5,789
- Mercurial : 1,845
- Bazar : 188
Demostrando esto en forma de gráfico circular:
Ahora bien, esto no debe tomarse como una señal de que Git es más difícil de usar que Mercurial, sino más bien de que hay muchas personas que hacen preguntas al respecto y reciben ayuda. Esto significa que si tus novatos se quedan atascados, tendrán una mayor posibilidad de recibir ayuda en la etiqueta git
que en la etiqueta Bazaar
.
Cubro algunos de los commit básicos de git en mi respuesta a "Should an developer siempre use control de versión" .
Además, está GitHub, que es un sitio de alojamiento de repositorios git realmente impresionante que, al igual que un buen Red, se vuelve excepcionalmente mejor con la edad. Su nuevo buscador de archivos, por ejemplo, me tenía nerdgasm''ing.
En resumen, definitivamente creo que los novatos deberían usar Git porque hay una comunidad más grande de personas que lo usan, GitHub lo usa y si usan el lenguaje de programación Ruby, efectivamente es el estándar de facto allí.