De Fusion/Direction De La Stratégie
Nous essayons de mettre en œuvre la "Base Double Plan de la Direction générale" tel que décrit par l'ALM Rangers dans la dernière Visual Studio, TFS de Ramification et de la Fusion de Guide. De l'orientation:
De base plan de la direction générale avec une MAIN, DEV, et la branche de VERSION permet le développement concomitant pour votre prochaine sortie, la stabilité de la branche PRINCIPALE pour le test et un COMMUNIQUÉ de la direction générale pour tout navire de blocage des corrections de bug. Plusieurs domaines de développement sont pris en charge par la création de nouvelles branches de développement de main. Ce sont les pairs de l'autre et les enfants de la PRINCIPALE.
De rejets supplémentaires sont pris en charge par la création de la libération des branches pour chaque version du produit. Chaque branche est un enfant de PRINCIPAL et d'un poste à l'autre (par exemple de la version 2.0 de la branche est égal à la version 3.0 et les deux sont les enfants de la MAIN). Si le soutien de seulement une version unique de la production à un moment, vous pouvez envisager une version unique de la branche, et de faire des corrections de bugs directement sur cette branche. Une fois la VERSION branche est créée PRINCIPALE et les branches de développement peut commencer à prendre les changements approuvés pour la prochaine version du produit.
Nous sommes indécis quant à savoir si nous voulons utiliser une Version unique de la branche (et l'étiquette versions), ou de créer une nouvelle branche de version par version. Cependant, il y a certaines questions qui s'appliquent de toute façon, ce ne semble pas être abordées par le document d'orientation.
Ma principale question est: À quel moment doit-on créer une branche (ou déplacer code testé pour la seule branche de VERSION si c'est la façon de faire)?
- Ma première réaction a été de créer seulement lorsque vous êtes prêt à faire de la libération, mais ensuite, vous avez le problème de la création d'un blocage pour le développement et le test de la prochaine sprint de travail; vous ne pouvez pas vérifier ces modifications dans les PRINCIPAUX jusqu'à la sortie de la branche a été créé (si vous le faites, il est plus difficile de séparer les changements que vous ne voulez aller à la LIBÉRATION).
- Deuxième idée est de créer de la branche au début du sprint, et que les changements de passer le test en MAIN, de les fusionner vers le bas vers la VERSION actuelle de la branche. Une fois que nous arrivons à la fin du sprint, nous pouvons verrouillage de la LIBÉRATION de la branche vers le bas, et en créer un nouveau pour le prochain sprint. Cela sonne comme il pourrait fonctionner, mais je ne vois pas de discussion de n'importe où, donc, je voulais juste voir ce que les gens font.
OriginalL'auteur RebelScum | 2013-12-31
Vous devez vous connecter pour publier un commentaire.
Je donnerais le même conseil que Adarsh Shah en 2 branches (PRINCIPAL, la LIBÉRATION) sont suffisants dans la plupart des cas, et à l'aide de branches pour des choses que vous ne voulez pas à s'engager dans la PRINCIPALE immédiatement parce que ce serait prendre un certain temps pour être totalement prêt pour les tests. Et par la LIBÉRATION, je veux dire une branche par libération réelle.
Gardez à l'esprit que, en théorie, à la main, dans une version prête à tout moment. Cela signifie en utilisant des branches pour beaucoup de petits changements trop et de ne pas fusionner les choses en main, tant que la fonction n'est pas prêt. Maintenant, c'est quelque chose que vous devez faire des essais et voir ce qui fonctionne le mieux dans votre environnement. Si vous trouvez que c'est trop dur de garder PRINCIPAL dans un communiqué de prêts de l'état, par tous les moyens, de créer une branche DEV de commettre le travail quotidien. Dans mon expérience, cependant, avec quelques bonnes directives, manuels et automatiques de test vous pouvez rapidement obtenir dans un flux d'écoulement PRINCIPAL peut être considéré comme tout à fait stable. J'ai travaillé dans des environnements où nous avons eu une branche DEV qui a été très instable et stable de la branche PRINCIPALE, et les environnements où nous n'avions pas une branche DEV. Parfois, la branche DEV était nécessaire, parfois, il est devenu un fardeau pour les synchroniser à la fois comme DEV et les PRINCIPAUX ont été relativement stables et qui est essentiellement juste une copie de chaque autre.
Maintenant, quand devez-vous créer la branche de version. Cela dépend du type de développement que vous faites. Pour les petits projets de bureau ou des sites internet qui ont une assez stable cycle de publication (une seule version par sprint, par exemple) je trouve qu'il est plus facile de créer une branche à l' fin d'un sprint, et seulement en le poussant à la production du sprint après.
Ainsi, à la fin de la S1 je crée la libération de la branche R1 de main, mais il n'est pas poussé à la production pour l'instant. Au cours de S2 à la fois de nouvelles fonctionnalités sont mises en œuvre sur les PRINCIPALES critiques et les bugs sont fixés sur R1. Si un correctif sur R1 est approuvé, il est fusionné retour en trop, si c'est nécessaire. À la fin de la S2, un nouveau R2 est créé, et R1 est poussé dans la production. J'ai trouvé que cette approche fonctionne très bien. En gros, vous avez un plein sprint pour travailler sur les dernières questions dans un communiqué de la branche.
Bien sûr, si un grave bug critique qui apparaît sur la production de ce bug est la priorité avant tout autre chose. Un RXa, RXb, ... de la branche peut alors être créée de l'existant R-branche qui est dans la production, mettre en œuvre les hot-fix et pousser les hot-fix dans la production. Vous pouvez alors examiner s'il est nécessaire de fusionner les modifications de la hot-fix dans votre branche PRINCIPALE. Ne pas créer un hot-fix sur la branche PRINCIPALE et fusionner vers le bas, vous trouverez qu'il devient rapidement trop complexe parce que sur les grandes a beaucoup les environs de code peut-être déjà changé.
OriginalL'auteur Jensen
Voici ce que je suggère:
1) Faire tout ce développement sur la branche Principale jusqu'à ce que le Code Complet. Le Code complet est le moment où les développeurs arrêtent de travailler sur de nouvelles fonctionnalités pour que sprint, mais peut corriger des bogues de régression. Le Code complet peut être quelques jours avant la sortie ou jusqu'à une semaine en fonction de combien de temps est votre sprint).
2) Créer une nouvelle branche de la PRINCIPALE à ce point . Déployer la branche d'assurance de la qualité/environnement de test pour faire un essai à la fumée. Après ce point de l'équipe QA va utiliser branche pour faire le test de dépistage de la libération.
3) les Développeurs peuvent commencer à travailler sur de nouvelles fonctionnalités pour le prochain sprint à ce point et de vérifier-dans les changements de la branche PRINCIPALE. Une régression problèmes trouvés pendant le test sera corrigé dans la VERSION de la branche d'abord et ensuite fusionné retour à la page PRINCIPALE.
4) Toute modification de code dans la VERSION de la branche sera ensuite envoyée à l'AQ/mise en scène pour d'autres tests.
5) l'Un de la Libération se fait à tout bug découvert dans la production sera corrigé dans la VERSION de la branche et de hot-fixes de Prod et également fusionné retour à la page PRINCIPALE.
N ° 1 sera trop tard et pas. 2 sera trop tôt de l'OMI.
Je suggère de créer une nouvelle branche à chaque nouvelle VERSION, et ensuite se débarrasser de l'ancienne VERSION de branches périodiquement au lieu d'utiliser des étiquettes.
Aussi, je préfère avoir seulement 2 branches PRINCIPALES(qui est aussi DEV) et de la LIBÉRATION à l'exception de toute branche développeurs ont besoin de toute caractéristique spécifique/changement de structure, etc. Sous le dossier racine j'ai l'habitude de créer PRINCIPAL, les REJETS(toutes les branches) et les BRANCHES(toutes les branches spécifiques à une fonction/cadre changements etc. mais ceux-ci sont créés uniquement dans des cas spéciaux pas toujours)
OriginalL'auteur Adarsh Shah