110 votes

Fermeture des succursales de Hg

Lorsque vous utilisez hg branch FeatureBranchName et en le publiant dans un dépôt central partagé par les développeurs, existe-t-il un moyen de fermer éventuellement l'accès à la base de données de l'entreprise ? FeatureBranchName lorsque son développement a été officiellement fusionné avec la branche par défaut ?

Il serait également utile que le FeatureBranchName n'était pas visible lors de l'exécution d'un hg branches commandement.

167voto

VonC Points 414372
hg commit --close-branch

devrait être suffisant pour marquer la fermeture d'une branche. (voir hg commit )

--close-branch

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

Voir aussi ce fil :

Je m'attends à ce que je ferme une branche parce que cette ligne de développement est arrivée à une impasse et que je ne veux plus m'en occuper.
Par conséquent, lorsqu'une branche a été fermée, je ne devrais pas la voir (dans les branches, les têtes, le journal, par exemple) à moins que je ne demande explicitement à voir les branches fermées.

Je dois noter que je m'attends à ce qu'une branche fermée reste dans le dépôt ; elle peut être utile dans le futur, et les commit --close-branch message devrait au moins expliquer pourquoi la branche a été fermée.
Élagage des branches est une toute autre chose.


Remarque : cette affaire de " fermeture de succursale " est une aspect considéré comme manquant dans Git, par rapport à Mercurial :

Les branches dans git sont, nous dit-on toujours, des choses éphémères à utiliser et à jeter, et pour autant que je sache, git n'a pas de moyen d'indiquer à vos collègues que vous avez terminé avec une branche ;
la seule façon de le faire est de le supprimer, ou d'espérer qu'ils voient le commit de fusion final et comprennent que la branche est fermée à tout développement ultérieur.

[Dans Mercurial] Lorsque vous avez terminé avec une branche, vous ne pouvez pas la supprimer du dépôt ; au lieu de cela, vous émettez un commit qui ferme la branche, et Mercurial note que la branche est fermée. Elle restera une partie permanente de l'historique de votre dépôt.

4 votes

Existe-t-il un moyen de fermer une branche non courante ?

0 votes

@ThomasS. 5 ans plus tard, je n'en suis pas sûr. La doc a été récemment mise à jour : mercurial.808500.n3.nabble.com/

2 votes

@ThomasS. oui, cette réponse m'a aidé à résoudre ce problème. hg debugsetparent <revision> hg branch <branchOfRevision> Notez que l'ordre est important. Cela fera croire à votre repo qu'il est sur la nouvelle révision, alors que tous vos fichiers sont de la révision initiale. Après cela, vous pouvez utiliser le commit --close-branch, mais utilisez l'option -X * pour faire un commit vide. hg commit --close-branch -X * -m "Closing branch."

8voto

roshanPoudyal Points 1

J'ai écrit un simple script qui complète la fermeture de la branche, les commandes se trouvent à l'adresse suivante Élagage des branches mortes .

## 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

Déplacez-vous vers 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

Que fait-il ?

Cela permet de faire ce qui suit :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X