Mercurial vía TortoiseHg-Fusionar una rama con nombre y luego cerrarla


Tengo una rama con nombre, NewFeature, que hice de la rama predeterminada. He hecho un par de confirmaciones a esa rama, y ahora me gustaría fusionarla para volver a unirse a la rama predeterminada.

Ahora (cada letra es una confirmación):

   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 seleccionar "Hg Commit...". Luego seleccioné "Cerrar Rama con nombre actual". Tengo este error: abort: can only close branch heads

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

¿Podría alguien por favor ayudar? Gracias de antemano!

Editar: Publiqué un problema a TortoiseHg

Author: arhak, 2011-02-01

5 answers

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

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

Usando el Repositorio Explorador:

  1. Update la copia de trabajo a rev B.

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

  3. Haga clic derecho en rev D y elija Merge with.... El diálogo debe mostrar rev B debe ser el rev local y D debe ser el otro rev.

  4. Haga clic en Merge en el cuadro de diálogo de fusión y resuelva cualquier conflicto, si lo hubiera.

Hasta ahora, nada se ha cambiado en el repositorio-su fusión está en el trabajo copia. Así que si algo está mal, puede cancelar la fusión, revertir su directorio de trabajo y comenzar de nuevo en un momento posterior o después de hacer algunos otros cambios adicionales de rama o tronco.

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

 22
Author: Bert F,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-20 17:07:56

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

Pero si realmente quieres cerrar una rama a través de TortoiseHg, eg

  1. ha creado la rama NewFeature
  2. luego se modificaron las ramas Default branch y NewFeature
  3. entonces, si la rama NewFeature toma bastante tiempo, es posible que ya haya fusionado varios valores predeterminados en NewFeature (para evitar tener demasiadas diferencias cuando quieras finalmente fusionar la rama NewFeature en la Predeterminada)
  4. finalmente, su nueva característica está completamente implementada o lo suficientemente estable, fusionó la rama NewFeature en la Predeterminada

A partir de ahora, se supone que nadie debe confirmar nada en la rama NewFeature, por lo que le gustaría cerrarla.

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

  1. haga clic en Hg Commit... cuando estás en tu rama NewFeature (no necesitas tener nada que confirmar - o lo haces con tu fusión final)
  2. haga clic en"Branch: NewFeature" (está en la parte superior en negrita)
  3. seleccione "Cerrar rama actual".
 40
Author: user276648,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-06 01:45:32

Para cualquiera que esté confundido por las respuestas a esta pregunta, aquí están las instrucciones sobre cómo hacerlo desde el Banco de trabajo TortoiseHg:

Cómo combinar la Rama de Característica y Cerrar la Rama

  1. Abra TortoiseHg Workbench.
  2. Seleccione su repositorio desde el Repositorio del Registro.
  3. Cambie a la rama en la que desea fusionar su rama (por defecto en este ejemplo):

Cambiar a la rama predeterminada

  1. Haga clic con el botón derecho del ratón en la rama que desea fusionar y cerrar (nueva característica en este ejemplo) y elegir Fusionar con Local. Esto fusionará los cambios de rama de la rama NewFeature en default:

Fusionar una rama en otra

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

Caja de confirmación

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

Gráfico de fusión de ramas

  1. Actualiza tu local a la rama que te gustaría cerrar, en este caso es NewFeature:

Actualizar a la rama para cerrar

  1. Haga clic en commit, la marca verde grande en la parte superior del banco de trabajo. Big tick verde

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

Ventana de confirmación con el nombre de la rama que queremos cerrar

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

Cerrar rama actual

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

Gráfico que muestra la rama cerrada

 11
Author: Luke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-23 14:44:16

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

Cerrar una rama creará un nuevo conjunto de cambios en la parte superior de la punta de la rama.

El error descrito (abort: can only close branch heads) ocurre típicamente si se ha actualizado a un conjunto de cambios que no está en la punta de una rama con nombre.

 1
Author: Tim Henigan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-01 00:17:26

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

 1
Author: nicodemus13,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-20 11:08:06