Nous utilisons:
- branche de développement exclusivement
jusqu'à ce que le projet soit presque terminé, ou que nous créions une version jalon (par exemple, une démonstration de produit, une version de présentation), puis nous divisons (régulièrement) notre branche de développement actuelle dans:
Aucune nouvelle fonctionnalité n'entre dans la branche de publication. Seuls les bogues importants sont corrigés dans la branche release, et le code pour corriger ces bogues est réintégré dans la branche développement.
Le processus en deux parties avec une branche de développement et une branche stable (release) nous facilite beaucoup la vie, et je ne crois pas que nous pourrions en améliorer une partie en introduisant plus 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 généré et donc, après un enregistrement de code, nous avons un nouvel exécutable de toutes les versions de construction et des branches dans environ une demi-heure.
Occasionnellement, nous avons également des succursales pour un seul développeur travaillant sur une technologie nouvelle et non prouvée, ou créant une preuve de concept. Mais en général, cela n'est fait que si les modifications affectent de nombreuses parties de la base de code. Cela se produit en moyenne tous les 3-4 mois et une telle succursale est généralement réintégrée (ou démantelée) en un mois ou deux.
En général, je n'aime pas l'idée que chaque développeur travaille dans sa propre branche, parce que vous «passez 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 vérifications, et avec l'expérience, chaque codeur sait quels changements peuvent potentiellement interrompre la construction et les tests sont donc plus rigoureux dans de tels cas.
À la question de l'enregistrement anticipé:
Si vous n'avez besoin que de PERFECT CODE pour être archivé, alors en fait rien ne doit être archivé. Aucun code n'est parfait, et pour que le QA le vérifie et le teste, il doit être 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 complète et testée par le développeur, elle est archivée. Elle peut même être archivée s'il existe des bogues connus (non fatals), mais dans ce cas, les personnes qui seraient affectées par le bogue sont généralement informé. Le code incomplet et en cours de travail peut également être archivé, 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 inévitable enregistrement combiné du code et des données rendra le programme inutilisable jusqu'à ce que le nouveau code soit construit. Le moins que nous fassions est d'ajouter un "WAIT FOR BUILD" dans le commentaire d'enregistrement et / ou d'envoyer un e-mail.