Cierre de sucursales de Hg

103

Al usarlo hg branch FeatureBranchNamey publicarlo en un repositorio central que se comparte entre los desarrolladores, ¿hay alguna manera de cerrarlo FeatureBranchNamecuando su desarrollo se haya fusionado oficialmente con la rama predeterminada?

También sería útil si FeatureBranchNameno estuviera visible al ejecutar un hg branchescomando.

Nate
fuente

Respuestas:

158
hg commit --close-branch

debería ser suficiente para marcar una rama cerca. (ver hg commit)

--close-branch

marcar una rama como cerrada, ocultándola de la lista de ramas.

Vea también este hilo :

Mi expectativa es cerrar una sucursal porque esta línea de desarrollo ha llegado a un callejón sin salida y no quiero que me molesten más con eso.
Por lo tanto, cuando se ha cerrado una rama, no debería verla (en ramas, cabezas, registro, por ejemplo) a menos que pida explícitamente ver ramas cerradas.

Debo señalar que espero que una rama cerrada permanezca en el repositorio; puede ser útil en el futuro, y el commit --close-branchmensaje debería al menos explicar por qué se cerró la sucursal.
Podar ramas es otra cosa.


Nota: ese negocio de "cierre de sucursales" es un aspecto que se considera que falta en Git, en comparación con Mercurial :

Las ramas en git son, siempre nos dicen, cosas efímeras para ser usadas y desechadas, y hasta donde yo sé, git no tiene una forma de indicar a tus colegas que has terminado con una rama;
la única forma de hacer esto es eliminarlo, o esperar que vean el compromiso de fusión final y entiendan que la rama está cerrada para un mayor desarrollo.

[En Mercurial] Sin embargo, cuando haya terminado con una rama, no podrá eliminarla del repositorio; en su lugar, emite una confirmación que cierra la rama y Mercurial observa que la rama está cerrada. Seguirá siendo una parte permanente de su historial de repositorio.

VonC
fuente
3
¿Hay alguna forma de cerrar una sucursal no actual?
Thomas S.
@ThomasS. Cinco años después, no lo sé con certeza. El documento se ha actualizado recientemente: mercurial.808500.n3.nabble.com/…
VonC
1
@ThomasS. sí, esta respuesta me ayudó con ese problema. hg debugsetparent <revision> hg branch <branchOfRevision> Tenga en cuenta que el orden es importante. Esto hará que su repositorio piense que está en la nueva revisión, mientras que todos sus archivos son de la inicial. Después de eso, puede usar la confirmación --close-branch, pero use la opción -X * para realizar una confirmación vacía. hg commit --close-branch -X * -m "Closing branch."
Maske
8

Escribí un script simple que completa el cierre de la rama, comandos que se encuentran en PruningDeadBranches .

## Script ##

#!/bin/bash
#script to close the not required branch in mercurial

hg up -C $1
if [ $? -eq 0 ]; then
    echo "$1 is up"
else
    echo "branch not found, please recheck your argument"
    exit 1
fi 
# if we are here then the branch is up, so we do the following
hg commit --close-branch -m 'this branch no longer required' 
echo "$1 is closed"
hg up -C default
echo "default is up" 

Cómo

Vaya a la copia local del repositorio y ejecute este script dando un argumento. Por ejemplo:

$./the_script_above.sh bad_branch_name_to_close

Qué hace

Esto hace lo siguiente:

  1. Si la rama existe, se actualiza a la rama dada o existe con un mensaje de error.
  2. Cierra la sucursal.
  3. Actualizaciones a la rama predeterminada.
  4. Se detiene.
Roshan Poudyal
fuente
El script no maneja ramas con espacios en el nombre.
Jared
@Jared ¿puedes ejecutar un comando up independiente con tu rama? Para, por ejemplo: $ hg update yourbranchnamecontainingspace. Creo que podríamos crear un nombre de rama con espacio, sin embargo, aparece un error de análisis cuando ejecuta comandos mercuriales como actualizar . Es posible que desee considerar la posibilidad de escapar del carácter de espacio mientras pasa el nombre de la rama como parámetro al script. Salud.
Roshan Poudyal
no está echo "$1 is up"duplicado aquí? ¿En theny después fi? Además, dicho script podría ser útil si admite una opción para fusionarse con el valor predeterminado de una vez
YakovL
1
@YakovL sí =). Gracias por la notificación. Actualicé el guión. Por supuesto, sería útil para la fusión opcional, intentaré actualizar en el futuro, pero hasta entonces puede escalar el script a su gusto =)
Roshan Poudyal