2009-07-06 3 views
2

Nous avons une grande application qui fonctionne à environ 5 endroits. Aucun de ces emplacements n'exécute la même version de l'application. Cela rend les correctifs et les mises à jour très compliqués. Essayez de suivre cet exemple: Nous appellerons l'application dont je parle "application A". Nous voulons maintenant déployer une application B vers l'un de ces emplacements et implémenter l'application A. Nous devrons modifier A pour accepter les exigences de B. Cependant, notre version de développement de A (la version que finalement chaque emplacement aura) doit également avoir un support pour B. Cela signifie que nous devons revenir à l'état du logiciel s'exécutant sur le site nécessitant B et apporter ces modifications à notre version de développement de A. Cela signifie également que les 4 autres emplacements implémentent une version de A sans support B.Comment est-ce que je devrais soutenir et continuer le développement sur une application fourchue?

Ainsi, on peut voir où cela devient frustrant de contrôler le contrôle de version. Si nous voulons prendre en charge les sites 2-5, nous ne pouvons pas utiliser notre version de développement de la source, nous devons revenir à la version spécifique sur ce site. Quelle est la meilleure façon de faire cela? Gardez à l'esprit que nous utilisons Visual Studio 2008 et Team Foundation Server.

+2

On dirait le classique "Docteur, ça fait mal quand je fais ça! situation. –

Répondre

4

La première chose que je recommanderais est de refactoriser votre application pour tous utiliser la même version du produit de base. Essayez de répartir logiquement des fonctionnalités spécifiques dans leurs propres modules et accédez à cette fonctionnalité via un modèle de type d'adaptateur.

+1

Merci pour la terminologie, John. Exactement ce que je cherchais - "Application fourchue" et "modèle d'adaptateur". – Daniel

1

John souligne un premier pas crucial. Rien de bon ne peut arriver tant que votre base de code n'est pas stable à l'interne. Mais même après avoir divisé votre application en composants réutilisables avec des interfaces bien définies, vous devrez probablement maintenir plusieurs versions («fourches») de plusieurs/tous ces composants et développer leurs versions en parallèle. C'est là que la ramification entre en jeu.

Je vous recommande fortement de lire les nouveaux papiers couvrant TFS Branching Guidance. J'étais assez critique des révisions précédentes, mais l'équipe de documentation a vraiment amélioré leur offre ici. (en partie grâce à des commentaires supplémentaires car TFS trouve une adoption plus large ... mais à parts égales pour finalement prêter attention aux normes SDLC établies qui précèdent l'entrée de Microsoft sur le marché)

+0

"Rien de bon ne peut arriver tant que votre base de code n'est pas stable à l'intérieur" - Merci pour le commentaire Richard, mais ce n'est pas vraiment mon propos. Ce que je veux dire, c'est de déballer la fonctionnalité de base et de gérer des fonctionnalités supplémentaires, spécifiques à l'emplacement, à l'aide d'un modèle de complément. Donc, tout le monde a la même version de l'application X, l'emplacement y a le complément y, l'emplacement z a le complément z. KWIM? –

+0

Si vous pouvez obtenir une séparation de 100%, c'est parfait. Ce n'est pas toujours faisable. Ou c'est faisable, mais vous ne trouvez pas où une autre fourchette spécifique de loc est nécessaire jusqu'à beaucoup plus tard. Se familiariser avec le branchement permet également de nombreuses autres formes de développement parallèle qui sont orthogonales à la façon dont vous êtes modulaire, comme la façon de maintenir la version X tout en travaillant sur X + 1. –

Questions connexes