Pregunta

He estado trabajando con Mercurial por algún tiempo.Al realizar cambios (privados) en algún software de terceros, en el pasado siempre creaba una rama con nombre separada para estos cambios.Cuando el código ascendente se actualiza, simplemente lo fusiono en mi rama nombrada.

Hoy leí sobre MQ (Mercurial Queues - capítulos 12 y 13).Creo que entendí el concepto detrás de MQ, entonces mi pregunta es:

¿Existe alguna ventaja de MQ sobre las sucursales (nombradas) en Mercurial (para mi escenario)?

¿Fue útil?

Solución

La principal ventaja de MQ sobre las sucursales con nombre son:

  • Puedes revisar tus parches.Esto le permite editar el historial y así puede mantener una serie limpia y lógica de parches además del código ascendente:Si nota un error en un parche, actualice el parche en lugar de realizar una nueva confirmación.

  • Los cambios en sus parches se separarán claramente de los cambios realizados anteriormente.Cuando fusionas dos ramas, estás mezclando las dos corrientes de desarrollo.Esto hace que sea difícil ver los cambios que ha realizado sin ver también los cambios provenientes de la rama ascendente.

  • Los nombres de los parches son transitorios.Cuando usted hg qfinish un parche aplicado, no queda ningún rastro del nombre del parche en la confirmación.Por lo tanto, puede usar MQ sin coordinarse primero con el repositorio ascendente, ya que nunca notarán MQ.

  • Evitas fusiones.En lugar de fusionarse con el código más reciente desde arriba, usted rebase sus parches aplicados.Esto le brinda una historia más simple.La historia es obviamente falsa ya que pretendes que hiciste todos tus parches. después ver el código desde arriba, cuando en realidad lo hiciste en paralelo con aguas arriba y posteriormente movido sus parches hasta la punta de aguas arriba.

  • No tienes ningún nombre de sucursal permanente en los conjuntos de cambios.La gente a veces tratar las ramas nombradas como desechables y se molestan cuando se dan cuenta de que una rama con nombre está fijada en la historia.(De hecho, puedes configurar el nombre de la sucursal con hg branch antes de publicar parches, por lo que este punto no es tan malo).

Las desventajas de MQ son:

  • Es una herramienta extra para aprender.Es poderoso, pero también te brinda más oportunidades de dispararte en el pie.Correr hg qdelete realmente lo hará borrar el parche y así puedes tirar datos.(Creo que esto está bien, pero un usuario de Git vino a nuestra lista de correo quejándose de esto).

  • Haces que sea mucho más difícil colaborar con otros.Tú poder doblar .hg/patches en un repositorio y enviar/extraer parches entre repositorios, pero es difícil hacerlo si eres más de un desarrollador.El problema es que terminas fusionando parches si más de una persona actualiza el mismo parche.

  • No tienes ningún nombre de sucursal permanente en los conjuntos de cambios.Si está usando ramas con nombre correctamente y usa nombres de ramas estables y a largo plazo, lo perderá cuando use MQ.

Otros consejos

buena pregunta.Depende.Personalmente, no le gusta el sistema de ramificación mercurial, y trato de evitarlo cuando pueda (utilizando marcadores empujados en lugar de rama).

MQ es una gran herramienta, con gran poder y grandes trampas.También puede considerar usar pbranch .

MQ es una gran herramienta si necesita producir y mantener un parche establecido para un proyecto, algo así como agregar característica-x a un proyecto y mantener parches actualizados con el código ascendente.

Los marcadores (o sucursales si lo desea) son buenas para la tarea de desarrollo corta que requieren que se fusionen en el código ascendente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top