Automatiquement changesets Tag lorsque COMMIT ou poussé au four
Question
Je voudrais savoir s'il y a un moyen de marquer automatiquement une changeset telle qu'elle est engagée localement ou lorsqu'il est poussé au dépôt du four.
Je voudrais tout d'avoir une changeset étiquette avec le numéro de version / build. Je prévois de stocker mes numéros de version / build dans une base de données et que vous souhaitez avoir un script récupérer cette valeur à partir de la base de données et ajouter une balise à l'changeset. Est-il possible d'invoquer automatiquement un script pour le faire comme un événement post-commit ou un événement post-poussée lorsqu'il est poussé au dépôt du four?
Je suis aussi ouvert à toutes les autres approches pour réaliser le marquage automatique sur tous les commits / push.
La solution
Au lieu de créer une étiquette pour chaque changeset, pourquoi ne pas essayer une des options suivantes:
- Utilisez le hachage changeset comme identifiant?
- Utilisez une chaîne générée à partir du journal en tant que votre identifiant (voir ci-dessous)?
Une chaîne descriptive peut être générée à partir du journal à l'aide de cette commande:
hg log -r 1.7.2 --template '{latesttag}-{latesttagdistance}-{node}\n'
Le résultat prend la forme:
<latest tag>-<# changesets since latest tag>-<changeset hash>
Par exemple, sur mon clone local du repo Mercurial, cela génère:
1.7.2-2-5e51254ad4d4c80669f462e310b2677f2b3c54a7
Ce qui me dit qu'il ya eu deux commits depuis balise 1.7.2 et le hachage actuel est changeset 5e51254a.
Dans Mercurial, chaque balise crée un nouveau changeset. Donc, si vous marquez tous les commits, vous doublez le nombre de changesets dans la prise en pension. Vous devez utiliser les outils intégrés (comme décrit ci-dessus) plutôt que d'essayer de réinventer la roue.
Autres conseils
Je voudrais savoir s'il y a un moyen de marquer automatiquement une changeset telle qu'elle est engagée localement ou lorsqu'il est poussé au dépôt du four.
Vous pouvez toujours écrire un crochet poste engager à le faire.
Je voudrais tout d'avoir un changeset étiquette avec le numéro de version / build.
Les tags sont utiles pour identifier les moments importants de votre engagement historique. Fournir ces moments-là un nom significatif qui a trait au développement des produits comme la version 1.0, la version 1.3, etc.
Si vous deviez faire une étiquette à chaque changement de jeu alors vous simplement augmenter le niveau de bruit. Vous aurez toujours besoin de conserver des informations sur les balises importantes où certains.
Considérez étiquette comme méta-informations sur le changement ensembles. Tous ne méritent pas la même importance. Pas tous d'entre eux exigent que les informations de méta.
En regardant les balises peut vous donner l'histoire de sens que lorsque vous les utilisez avec parcimonie.
crochets
Voir:
- http://www.selenic.com/mercurial/hgrc.5 .html # crochets
- utiles Mercurial crochets
- https://www.mercurial-scm.org/wiki/Hook
Exemple: Exécuter après changegroup a été ajouté par push, pull ou dégrouper. Je l'ai utilisé pour déclencher automatiquement builds.
[hooks]
changegroup.yyyy = command
De même, il est post-commit, crochets post-poussoirs
[hooks]
post-<command> = command