Question Dans Mercurial, comment puis-je associer plusieurs commits à un seul problème dans notre bugtracker?


Nous utilisons actuellement svn et, grâce à l'utilisateur de hooks, sommes en mesure de nous assurer que chaque message de validation est préfixé par un numéro de bogue (ce qui lie ces modifications à un rapport d'incident dans notre gestionnaire de problèmes Bugzilla.)

Nous souhaitons passer à mercurial avec toute sa bonté distribuée. Mais l'un des avantages de hg est que les développeurs ne doivent pas nécessairement être en ligne pour valider les modifications. Nous ne voulons donc pas de scripts de hooks validant les numéros de bogues par rapport à notre ressource centrale Bugzilla.

J'y viens peut-être trop d'un point de vue svn, mais ce que je pense, c'est que les développeurs soient en mesure de spécifier un numéro de bogue au moment où ils décident de pousser leur modification vers un référentiel de test central. La condition essentielle ici est que nous voulons pouvoir relier les commits à un bogue Bugzilla, mais nous ne voulons pas donner aux développeurs un workflow complexe et manuel (que l’extension Attic, par exemple, semble imposer.)

Des idées?


6
2017-08-24 08:58


origine




Réponses:


La chose importante à retenir est que les changesets sont (presque) immuables, ce qui signifie qu'il est trop tard pour ajouter un numéro de bogue lorsque les développeurs sont en cours d'exécution hg push. La commande push ne fait que déplacer des changesets, pas les changer.

cependant, hg push C’est bien sûr le bon moment pour mettre à jour Bugzilla car les développeurs sont en ligne lorsqu’ils passent au référentiel central. Vous pouvez donc demander aux développeurs d’installer un crochet comme

[hooks]
pre-push.bugzilla = pick-bug-number.sh

le pick-bug-number.sh Le script doit d’abord vérifier que les développeurs poussent vers votre référentiel central (et non, par exemple, vers un autre référentiel de leur ordinateur portable), puis leur demander un numéro de bogue. Lorsque le développeur entre le numéro de bogue, le script peut regarder hg outgoing et associez les changesets sortants au bogue dans Bugzilla.

C'est une façon d'associer les ensembles de modifications à un système de suivi des problèmes externes. Il n'y aura rien dans les changesets qui les lie à un bogue Bugzilla - c'est seulement Bugzilla qui sait que les changesets appartiennent à quels bogues.

Une autre façon serait d'intégrer les numéros de bogues dans les changesets eux-mêmes. Cela peut être fait avec branches nommées dans Mercurial. Demandez à vos développeurs de courir

$ hg branch bug-123

avant de commencer à travailler sur le numéro de bogue 123. Les commits suivants contiendront ensuite le libellé "bogue-123". Lors du transfert vers le serveur, il est facile d’analyser les changesets envoyés (dans une changegroup hook) et mettre à jour Bugzilla.

Vous pouvez également demander aux développeurs de mettre le numéro de bogue dans le message de validation, comme avec Subversion. Il n’y aura pas de validation en ligne, mais ils peuvent suivre à peu près le même flux de travail que dans Subversion. Il est préférable de valider le message de validation en configurant ui.editor. Faites-en un script personnalisé qui vous demandera un numéro de bogue, mettez-le dans un modèle de message de validation, puis démarrez et un éditeur pour permettre aux développeurs de saisir le message de validation.

L'utilisation de messages de validation est préférable à l'utilisation de branches nommées si vous prévoyez d'avoir des milliers de numéros de bogues. Mercurial lui-même évolue assez bien avec le nombre de branches nommées, mais de nombreux outils s'attendent à pouvoir afficher toutes les branches dans un seul menu déroulant. Cela fonctionne bien lorsque vous en avez 10 ou 20, mais échoue lorsque vous en avez 5 000. C'est vraiment plus une chose de l'interface utilisateur, mais il pourrait revenir et vous mordre longtemps après que vous ayez démarré ce système.


3
2017-12-23 16:06





Vous pouvez par exemple exécuter le script cron côté serveur, en vérifiant le journal mercurial (en utilisant le journal hg), puis en mettant à jour Bugzilla avec le numéro de problème trouvé dans le journal. Par exemple, le paramètre --date 2011-01-26 to hg log ne donne que les messages de journal au cours d'une journée donnée, ce qui est beaucoup plus rapide à traiter que toutes les entrées de journal à chaque fois.

Vous ne pouvez pas ajouter de messages lors de l'envoi au serveur, mais uniquement lors de la validation.


0
2018-01-26 18:17