tutorial español mercurial tortoisehg

español - Mercurial a través de TortoiseHg: fusione una rama nombrada y luego ciérrela



tortoisehg svn (5)

Tengo una rama con nombre, NewFeature, que hice de la rama predeterminada. Hice un par de confirmaciones en esa rama, y ​​ahora me gustaría fusionarla para volver a unir la rama predeterminada.

Ahora (cada letra es un compromiso):

default: A---B NewFeature: /--C---D

Lo que me gustaría:

default: A---B-----------E NewFeature: /--C---D--/

Intenté hacer clic derecho en el directorio y seleccionando "Hg Commit ...". Luego seleccioné "Cerrar rama con nombre actual". Recibí este error: abort: can only close branch heads

También busqué una opción "cerrar rama" en el explorador de repositorio, pero no pude encontrar nada.

¿Alguien podría ayudar por favor? ¡Gracias por adelantado!

Edit: publiqué un issue en TortoiseHg


En TortoiseHg, su copia de trabajo debe actualizarse a la punta de la rama que desea cerrar antes de usar el cuadro de diálogo de confirmación.

Al cerrar una rama se creará un nuevo conjunto de cambios en la parte superior de la punta de la rama.

El error que describió ( abort: can only close branch heads ) generalmente ocurre si se ha actualizado a un conjunto de cambios que no se encuentra en la punta de una rama nombrada.


Para cualquier persona que esté confundida por las respuestas a esta pregunta, aquí están las instrucciones sobre cómo hacer esto desde el TortoiseHg Workbench:

Cómo fusionar una rama de función y cerrar una rama

  1. Abrir TortoiseHg Workbench.
  2. Seleccione su repositorio desde el repositorio de registro.
  3. Cambie a la rama en la que desea fusionar su rama (por defecto en este ejemplo):

  1. Haga clic con el botón derecho del mouse en la rama que le gustaría combinar y cerrar (NewFeature en este ejemplo) y elija Combinar con local . Esto fusionará los cambios de rama de la rama NewFeature a la default :

  1. Verá un cuadro de confirmación que confirma que los cambios se fusionarán de una rama a otra, haga clic en los pasos Siguiente, Confirmar ahora y finalizar :

  1. Ahora puede ver en el gráfico que los cambios se han fusionado, ahora podemos cerrar la rama NewFeature ya que ya no lo necesitamos:

  1. Actualice su local a la sucursal que desea cerrar, en este caso es NewFeature :

  1. Haga clic en confirmar , la marca verde grande en la parte superior de la mesa de trabajo.

  2. En la ventana de confirmación, debería ver la rama que desea cerrar sobre el cuadro de texto de comentario. Haga clic en el nombre de la rama:

  1. Aparecerá una ventana y seleccionará cerrar rama actual :

  1. Ahora haga clic en confirmar. Su gráfica debe mostrar que la rama está cerrada:


Para fusionar, necesita una copia de trabajo limpia, sin cambios no confirmados. La combinación se colocará en la copia de trabajo para su revisión y luego confirmará la copia de trabajo para "completar" la combinación.

Si tiene cambios no comprometidos que no está preparado para confirmar, puede ver cómo archivar esos cambios temporalmente (si tiene la extensión adecuada) o solicitar una nueva copia de trabajo en otro lugar para usar para la combinación.

Usando el Explorador de Repositorio:

  1. Update la copia de trabajo a rev B

  2. Seleccione la fila rev D en el historial de revisiones.

  3. Haga clic con el botón derecho en rev D y elija Merge with... El diálogo debe mostrar rev B debe ser la rev local y D debe ser la otra rev.

  4. Haga clic en Merge en el cuadro de diálogo de combinación y resuelva los conflictos, si los hay.

Hasta ahora, no se ha cambiado nada en el repositorio, su combinación está en la copia de trabajo. Por lo tanto, si algo está mal, puede cancelar la combinación, revertir su directorio de trabajo y comenzar de nuevo más tarde o después de realizar otros cambios adicionales de rama o troncal.

Si todo está bien después de los pasos 1-4, haga clic en Commit en el cuadro de diálogo de combinación para confirmar la combinación.


También parece que recibe este error si la rama ya está cerrada, es decir, está intentando cerrar una rama cerrada. Un mensaje de error más útil sería útil.


El ejemplo que das es más una Fusión que realmente un Cierre . Además, si es así de simple, probablemente no desee o necesite crear una rama con nombre.

Pero si realmente desea cerrar una rama a través de TortoiseHg, por ejemplo

  1. usted creó la rama NewFeature
  2. Luego se modificaron tanto la rama predeterminada como las ramas NewFeature.
  3. luego, si la rama NewFeature toma bastante tiempo, es posible que también hayas fusionado varias veces el valor predeterminado en NewFeature (para evitar tener demasiadas diferencias cuando quieras combinar finalmente la rama NewFeature con la predeterminada)
  4. finalmente, su nueva característica se implementa por completo o es lo suficientemente estable, fusionó la rama NewFeature con la predeterminada.

A partir de ahora, nadie debe cometer nada en la rama NewFeature, por lo que le gustaría cerrarlo.

Puedes hacerlo en TortoiseHg (tengo la versión 2.3.2):

  1. haga clic en Hg Commit ... cuando esté en su rama NewFeature (no es necesario que tenga nada que comprometer, o lo haga con su combinación final)
  2. haga clic en "Rama: NewFeature" (está en la parte superior en negrita)
  3. seleccione "Cerrar rama actual" .