web-dev-qa-db-fra.com

Fermeture des branches de mercure

Lorsque vous utilisez hg branch FeatureBranchName et en le publiant dans un référentiel central partagé par les développeurs, existe-t-il un moyen de fermer le FeatureBranchName lorsque son développement a été officiellement fusionné avec la branche par défaut?

Il serait également utile que le FeatureBranchName ne soit pas visible lors de l'exécution d'un hg branches commande.

97
Nate
hg commit --close-branch

devrait être suffisant pour marquer une succursale proche. (voir hg commit )

--close-branch

marquer une branche comme fermée en la cachant de la liste des branches.

Voir aussi ce fil :

Mon attente est de fermer une succursale parce que cette ligne de développement est dans une impasse et que je ne veux plus en être dérangé.
Par conséquent, quand une branche est fermée, je ne devrais pas la voir (dans les branches, les têtes, les journaux, par exemple), sauf si je demande explicitement à voir les branches fermées.

Je devrais noter que je m'attends à ce qu'une branche fermée reste dans le référentiel; cela peut être utile à l'avenir, et le commit --close-branch _ message devrait au moins expliquer pourquoi la succursale a été fermée.
branches de taille est une autre chose.


Remarque: cette activité "fermeture de succursale" en est une aspect considéré comme manquant dans Git comparé à Mercurial :

On nous dit toujours que les branches en git sont des objets éphémères à utiliser et à jeter, et pour autant que je sache, git n’a aucun moyen d’indiquer à vos collègues que vous vous en sortez avec une branche;
le seul moyen de le faire est de le supprimer ou d’espérer qu’il voit l’engagement de la fusion finale et comprendre que la branche est fermée à un développement ultérieur.

[Dans Mercurial] Lorsque vous avez terminé avec une branche, vous ne pouvez pas la supprimer du référentiel; Au lieu de cela, vous émettez un commit qui ferme la branche et Mercurial note que la branche est fermée. Cela restera une partie permanente de l’historique de votre référentiel.

150
VonC

J'ai écrit un script simple qui complète la fermeture de la branche, commandes trouvées à 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" 

Comment

Passez à la copie locale du référentiel et exécutez ce script en donnant un argument. Par exemple:

$./the_script_above.sh bad_branch_name_to_close

Qu'est ce que ça fait

Cela fait ce qui suit:

  1. Si la branche existe, elle se met à jour avec la branche donnée ou existe avec un message d'erreur.
  2. Il ferme la branche.
  3. Met à jour la branche par défaut.
  4. Arrêts.
7
Roshan Poudyal