2010-12-03 20 views
3

J'ai plusieurs dépôts qui ont été convertis à partir de SVN et nous voulons nous assurer que lorsque les gens poussent vers le dépôt, ils ne peuvent pas créer de têtes supplémentaires. il y a plusieurs crochets dans le TipsAndTricks wiki page qui empêchent de pousser s'il y a plusieurs têtes, mais comment je peux construire un crochet qui empêche de pousser nouvelles têtes?Comment est-ce que je peux créer un crochet mercurial qui empêche de nouvelles têtes?

Il semble que la bonne façon de procéder serait de comparer le nombre de têtes de la révision 0: parent, puis de comparer 0: tip, mais je n'arrive pas à trouver un moyen de le faire. hg heads -r $HG_NODE ne montre que le nombre de têtes après le premier commit de l'utilisateur.

Répondre

0

Utilisez hg ci -m 'Closed branch feature-x' --close-branch pour fermer toutes les têtes, sauf une, puis appliquez un crochet normal à une tête.

5

Par défaut, hg push empêche la poussée de têtes supplémentaires nécessitant l'indicateur -f. Vous pourriez écrire une extension Mercurial pour l'ignorer, désactivant ainsi la poussée de nouvelles têtes. Cela dit, je remettrais en question la sagesse d'interdire mécaniquement les nouvelles têtes. Au lieu de cela, je voudrais former votre équipe à fusionner correctement avant de pousser, tout en leur permettant de le faire dans les rares occasions où cela a du sens, d'autant plus que Mercurial vous prévient déjà.

+0

Je l'ai vu plusieurs empêcher haeads présentés comme étant un crochet commun à plusieurs endroits. C'est dans les trucs et astuces du wiki et est utilisé par mozilla et netbeans. Cela semble être une preuve que ce n'est pas une mauvaise idée. Si je commençais un nouveau projet, j'en utiliserais un. Mais ils ne manipulent pas mes repos convertis comme j'ai besoin. –

+0

La formation des personnes à fusionner avant de pousser ne résout pas le problème. Quelqu'un d'autre aurait toujours pu créer quelque chose de nouveau entre votre fusion et votre poussée. – Kylotan

+0

@Kylotan: Alors vous auriez l'avertissement que vous étiez en train de pousser une nouvelle tête, et hg vous recommanderait de tirer et de fusionner avant de pousser. Vous devez toujours utiliser le drapeau '-f'. – tghw