Introducción a Mercurial

Acabo de empezar a trabajar en un proyecto que utiliza Mercurial como sistema de control de versiones, y necesito algunos consejos básicos sobre cómo usarlo. Utilice esta pregunta para dar algunos consejos introductorios sobre esta tecnología.

  • El sitio oficial de Mercurial

Especialmente, estoy buscando consejos sobre los mejores progtwigs para usar y las mejores técnicas para usar (twigs, dentro y fuera, etc. ¡Tengo que aprender las mejores prácticas!)

Sé que ya tienes el sitio de Mercurial, pero el recurso más útil para mí fue el Mercurial . Es una excelente visión general del progtwig y cómo usarlo.

Encontré que la mejor manera de aprender Mercurial era usarlo en un proyecto. Importé en Mercurial un proyecto que había exportado de subversión y lo desarrollé con regularidad. Me aseguré de clonar el repository para diferentes sets de cambios para poder acostumbrarme a la fusión y actualización. No he aprendido todos los usos avanzados, pero ahora estoy bastante firme con él y aún no me he vuelto a cambiar a Subversion.

Muchos proyectos tienen diferentes técnicas para el flujo de trabajo de compromiso. Algunos tienen cambios impulsados ​​por los desarrolladores, como los sistemas centralizados, y algunos sacarán los cambios de los contribuyentes (Linux, por ejemplo). Es difícil generalizar demasiado sin conocer el process para su proyecto.

Así es como hago mi desarrollo:

  • Árbol centralizado en un file compartido o http, llamado project-trunk o project que es la versión definitiva del proyecto
  • Un tree limpio en mi sistema que clono desde el repository remoto y lo uso para retroceder al repository. Luego clono de este tree para mis cambios. Yo llamo a este tree project-local
  • Clona el tree project-local del project-local para cada uno de mis cambios: ej. project-addusers , project-141 , etc.
  • Después de que termine con los commits de un tree, luego envío los cambios al repository project-local del project-local
  • Finalmente, envíe los cambios en el project-local al project-trunk

Tengo el tree project-local limpio porque luego puedo volver a colocar todos los sets de cambios en el tronco al mismo time, lo que es útil si hay un grupo de cambios relacionados que deben volverse a unir.

En cuanto a las herramientas, depende de su plataforma. Solo uso la herramienta de command-line de vanilla. Viniendo de TortoiseSVN, fue un poco un cambio ir a la línea de command. Pero estoy bien con eso ahora. Intenté usar TortoiseHg pero no funcionó bien en mi máquina virtual Windows 7 x64. Escuché que es mucho mejor en las plataforms compatibles de 32 bits.

Aquí hay un útil tutorial sobre Mercurial escrito por Joel Spolsky .

Cubre el uso básico y los commands, así como también cómo trabajar con Mercurial en un nivel más conceptual. Si ya está familiarizado con SVN, la primera parte definitivamente vale la pena leerla: habla sobre las principales diferencias conceptuales entre SVN y Mercurial, porque tratar de usar Mercurial de la misma manera que usa SVN es search problemas.

Eche un vistazo al libro de Mercurial , o en este tutorial de Mercurial .

Dependiendo de su experiencia con otras herramientas de control de fonts, también sugeriría un SCM específico, cualquiera que sea la guía de Mercurial. Por ejemplo, eche un vistazo a esta guía para usuarios de Subversion .

Otro buen recurso para entender la idea de control de fuente "distribuida" es: http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/ … con diagtwigs útiles.

Si utiliza el último cliente de TortoiseHG e incluye el directory de installation en su entorno PATH, podrá usar tanto la buena GUI que proporcionan como la línea de command 'hg'.

No puedo recomendar el uso excesivo de las extensiones mq. Constituyen un excelente entorno de "repository de trabajo".

Utilizo las queues para administrar cambios locales en un repository de subversión. Hago mis cambios locales a corto ploop y uso mercurial para mantenerme sincronizado con la subversión y el rest del equipo.

Algunas de las publicaciones de Steve Losh en el blog son buenas, a pesar de que ahora tienen un par de años. Se ocupan principalmente de cómo trabajar con ramificación.

  • Guía para la ramificación en Mercurial
  • Flujos de trabajo de la sucursal: ramificación según sea necesario
  • Flujos de trabajo de sucursales: Estable y pnetworkingeterminado

También vale la pena mirar su sitio hgtip.com .

Además del Libro Mercurial y el tutorial Hg Init, me gustaría mencionar la guía basada en ejemplos que he escrito:

  • Mercurial Kick Start

Muestra cómo comenzar con Mercurial y también cubre algunos conceptos más avanzados, como twigs con nombre y hgsubversión. Lo he usado cuando enseñaba Mercurial a nuevos usuarios y parecía que les gustaba.