Nous utilisons :
- branche de développement exclusivement
jusqu'à ce que le projet soit presque terminé, ou que nous créions une version intermédiaire (par exemple, une version de démonstration ou de présentation du produit), alors nous nous séparons (régulièrement) de la branche de développement actuelle pour passer à la branche de développement :
Aucune nouvelle fonctionnalité n'est intégrée à la branche de publication. Seuls les bogues importants sont corrigés dans la branche de publication, et le code pour corriger ces bogues est réintégré dans la branche de développement.
Le processus en deux parties avec une branche de développement et une branche stable (release) nous facilite grandement la vie, et je ne pense pas que nous puissions améliorer quoi que ce soit en introduisant davantage de branches. Chaque branche a également son propre processus de construction, ce qui signifie que toutes les deux minutes, un nouveau processus de construction est lancé et qu'après une vérification du code, nous avons un nouvel exécutable de toutes les versions et branches de construction en une demi-heure environ.
Occasionnellement, nous avons aussi des branches pour un seul développeur travaillant sur une technologie nouvelle et non éprouvée, ou créant une preuve de concept. Mais généralement, cela n'est fait que si les changements affectent de nombreuses parties de la base de code. Cela se produit en moyenne tous les 3 ou 4 mois et une telle branche est généralement réintégrée (ou supprimée) au bout d'un mois ou deux.
En général, je n'aime pas l'idée que chaque développeur travaille dans sa propre branche, car on "saute le pas et on passe directement à l'enfer de l'intégration". Je le déconseille fortement. Si vous avez une base de code commune, vous devriez tous y travailler ensemble. Cela rend les développeurs plus méfiants à propos de leurs checkins, et avec l'expérience, chaque codeur sait quelles modifications sont susceptibles de casser le build et donc les tests sont plus rigoureux dans de tels cas.
Sur la question de l'enregistrement précoce :
Si vous souhaitez uniquement CODE PARFAIT pour être enregistré, alors en fait rien ne devrait être enregistré. Aucun code n'est parfait, et pour que l'AQ puisse le vérifier et le tester, il doit se trouver dans la branche de développement afin qu'un nouvel exécutable puisse être construit.
Pour nous, cela signifie qu'une fois qu'une fonctionnalité est terminée et testée par le développeur, elle est enregistrée. Elle peut même être enregistrée s'il y a des bogues connus (non fatals), mais dans ce cas, les personnes qui seraient affectées par le bogue sont généralement informées. Le code incomplet ou en cours de développement peut également être validé, mais uniquement s'il ne provoque pas d'effets négatifs évidents, comme des plantages ou la rupture de fonctionnalités existantes.
De temps en temps, un contrôle combiné inévitable du code et des données rendra le programme inutilisable jusqu'à ce que le nouveau code ait été construit. Le moins que nous puissions faire est d'ajouter un "WAIT FOR BUILD" dans le commentaire du check-in et/ou d'envoyer un e-mail.
0 votes
J'ai déjà répondu à une question similaire (ou, en fait, à une question dans le même espace/direction) auparavant, alors vous pourriez vouloir vérifier cette question : Quelles sont les bonnes stratégies pour permettre aux applications déployées d'être réparables à chaud ?
0 votes
@revo : attendez... ma réponse de 2008 est périmée ? :) Je suppose qu'elle l'est en effet. Cela fait plus de 10 ans : J'ai modifié ma réponse.