Question

Je suis en SMC et de travailler avec une variété d'outils (Subversion, Clearcase, TFS, Perforce) et technologies (.NET, Java la plupart du temps). Avant de commencer le travail, l'ordre normal des affaires était de créer une branche contrôlée.

I définie branche commandée en tant que: -Une branche séparée qui contient le code promu que les développeurs ne peuvent pas accéder. Seule une équipe d'ingénieurs de construction ont accès à ce sujet.

build contrôlée: -Build moteur qui prend un code de branche contrôlée et produit un développeurs d'artefacts ne parviennent pas à modifier.

En conséquence, la fusion dans cette branche est devenue une étape importante dans le cadre d'un processus de génération contrôlée. Cela peut créer à la fois des problèmes avec la vitesse et les erreurs (qui sera principalement atténuée par l'automatisation).

Avantages: Code de verrouillage automatique (car les devs ne peuvent pas modifier la branche) Les noms de succursales peuvent être différentes (les autres équipes ne nous sommes pas nécessairement en mesure pratiques normalisées et pas nécessairement suivre pour exercer la pression nécessaire.) moyen facile de savoir l'état exact du code de version (à savoir le dernier code dans la branche contrôlée pour une version est ce qui se passait à prod)

Inconvénients: La vitesse correspondant dev construit avec contrôle builds en discutant des problèmes avec les développeurs (ce qui est automatisé, mais un peu en désordre). Les erreurs (un autre endroit pour gâcher dans le processus) Peut la fonctionnalité de séparation de sécurité / rôle soit pleinement pris en charge par l'aide / changelists / changesets étiquettes immuables?

Questions:

Devrais-je vous recommande de passer de la stratégie de la branche contrôlée actuelle? Est-ce que je manque d'autres avantages?

Était-ce utile?

La solution

Je recommande de ne pas utiliser les branches comme mécanisme de promotion, à moins que vous avez l'intention de faire beaucoup de modifications de l'être fusionnée à ladite branche d'étiquette.
devrait isoler un effort de développement (c.-à- quelque chose où les fichiers sont des versions modifiées et nouveaux engagés)

Une étiquette associée à une sorte de métadonnées (attributs ClearCase, propriétés SVN, Git notes, ...) devrait être suffisant pour surveiller la promotion de ladite étiquette (avec son contenu immuable) à travers les différents niveaux de promotion.

Autres conseils

Nous utilisons une branche contrôlée (MAIN) comme notre branche de construction officielle. Les développeurs ne sont autorisés l'accès à cette branche par l'opération de fusion de la branche de développement. En outre, le code de branche principale est fusionnée à une branche CORRECTIF, qui est dédiée à notre bugfixes version actuelle du logiciel, et une branche PROD, où le code est marqué sur une base par libération.

Je suis d'avis que tout ce qui va être construit pour tester (et en fin de compte) à des fins de production ne devraient pas avoir accès développeur occasionnel, et devrait être géré par un gestionnaire de SCM ou un autre type de rôle bibliothécaire.

Lorsque nous avons des problèmes de construction au sein de notre branche principale, nous sommes aussi catégoriques d'avoir ces bogues corrigés au sein de la branche de développement par les développeurs et ayant la résolution réincorporé dans MAIN au sein de nos politiques SCM.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top