Cela fait deux ans depuis la dernière réponse à cette question et je pense que maintenant l'histoire change. Pour moi, la réponse est "Chaque fois que vous utilisez le contrôle du code source pour suivre les versions."
Pour élaborer, ces jours-ci, le suivi des versions de projet avec le contrôle du code source ne fonctionne pas toujours. (par exemple, en utilisant npm pour gérer la dépendance et spécifier les versions sémantiques avec '^') Dans ce cas, les artefacts du projet changent à chaque fois qu'une génération se produit, sans nécessairement correspondre aux changements de code source à chaque fois. Pour gérer ce genre de nouveaux défis, certaines équipes choisissent d'avoir déjà construit des «artefacts» enregistrés dans le système de contrôle des artefacts (par exemple, JFrog Artifactory) pour les versions de projet de piste.
De toute évidence, lorsque vous avez déjà un contrôle de version des artefacts en place, vous ne tireriez pas le `` code de production '' d'une branche GIT et ne le construisez / déployez pas en production, vous consultez plutôt le système de contrôle des artefacts pour des versions directement exécutables pour le déploiement. Dans de tels cas, le concept de «branche de libération» perd soudainement son sens. Et chaque fois que votre équipe décide de ne pas associer la branche git à la version finale, engager / pousser directement vers master devient à nouveau un choix judicieux: il s'agit de la branche par défaut chaque fois que le dépôt est cloné, d'où automatiquement la sémantique largement acceptée et bien communiquée. changements. Pourtant, comme le suggère la réponse acceptée, vous devriez probablement diriger un rôle d'attribution aux branches, y compris le maître, et utiliser ces branches uniquement pour ces rôles particuliers.
Enfin, je vais un peu plus loin et je suggère d'utiliser master comme branche de développement dans des projets avec seulement une poignée de committers principaux. C'est le cas pour mon équipe et probablement la même chose pour la plupart des micro-services. S'engager sur le maître supprime le processus de communication des changements et évite potentiellement de «fusionner l'enfer» lorsque vous travaillez sur des fonctionnalités sur plusieurs sprints. De plus, le code dans la branche principale n'a même pas à `` fonctionner '', le processus de construction / test automatisé vous dira ce qui s'est mal passé et il est de toute façon assez facile de vérifier l'historique de git et de contacter l'auteur qui a cassé la construction / test :-)