47 votes

Team Foundation Server Source De La Structure De Contrôle

J'ai travaillé sur la standardisation de la source de contrôle de la structure de notre Team Foundation Server déploiement pour la nouvelle année. J'ai commencé par utiliser le Microsoft Team Foundation Server Ramification de l'Orientation de la documentation disponible sur CodePlex.

J'espérais obtenir des commentaires et des réponses à quelques-unes des questions spécifiques que j'ai à propos de la structure proposée. Quand il s'agit de la structuration de contrôle de source dans TFS, j'ai appris qu'il y a beaucoup de "normes" à choisir et il n'est pas vraiment une norme.

Tout d'abord, je vais vous présenter et décrire les décisions et l'utilisation.

$/                                                
    {Team Project}/                               
        {Subproject}/                             
            Development/                          
                Trunk/                            
                    Source/
                    Tests/
                    Sandcastle/
                    TeamBuildTypes/
                        {Build Name}/
                Branches/
                    {Branch Name}/
                        Source/
                        Tests/
                        Sandcastle/
                        TeamBuildTypes/
                            {Build Name}/

            Integration/
                Source/
                Tests/
                Sandcastle/
                TeamBuildTypes/
                    {Build Name}/
            Production/
                Releases/
                    {Release Version}/
                        Source/
                        Tests/
                        Sandcastle/
                        TeamBuildTypes/
                            {Build Name}/
                Branches/
                    {Branch Name}/
                        Source/
                        Tests/
                        Sandcastle/
                        TeamBuildTypes/
                           {Build Name}/

La logique générale est qu'une Équipe de Projet peut contenir soit une seule logique de projet (où il n'y aurait pas d' {Subproject} entrée) ou de plusieurs projets liés à la forme d'un produit ou d'un outil de suite. Les trois grands conteneurs sont appelés Development, Integration, et Production.

Au sein de l' Development contenant du Tronc, il y a des dispositions pour les deux projets qui composent le produit dans l' Source le dossier, avec les tests unitaires disponibles dans l' Tests le dossier. Une majorité de mineurs de développement se ferait dans le tronc, avec des branchements disponibles par le biais de l' Trunk le dossier frère de l' Branches le dossier, qui agit comme une ramification du conteneur. Un ou plusieurs fichiers de solution serait de vivre à l'intérieur de l' Trunk, permettant branches au niveau de la capture de la solution, la source, et les tests unitaires.

L' Integration conteneur, souvent appelé "principal" dans les pays non-TFS mise en œuvre, est exclusivement utilisé pour intégrer les Révisions de Development créer un stable et vérifiables construire. Il est à l'origine une branche de l' Development conteneur une fois un testable produit a été atteint. Les versions à partir de ce conteneur sera utilisé pour notre environnement de test et de test de charge de l'environnement. Nous choisissons d'inclure des tests de charge avec testable construit afin que nous puissions surveiller les changements dans la performance, être en mesure d'isoler rapidement les ensembles de Modifications qui peuvent avoir contribué à des irrégularités.

Production est utilisé pour produire de la pré-production et de production de la qualité des constructions. Il est à l'origine une branche de l' Integration conteneur une fois stable construire a été recommandé pour la libération. Au sein de l' Releases le dossier, une branche "par libération" de la structure est suivie, en fournissant des instantanés et de l'isolement dans un lieu unique. (Par exemple, lors de l' Release 1.1 est prêt pour une pré-production de construire, la stable Integration conteneur est ramifiée dans un nouveau Release 1.1 le dossier dans l' Production/Releases de la structure. Ultérieure RCs et RTWs/RTMs sont promus dans ce dossier.) Une ramification de la structure est également présent, comme on le voit dans l' Branches conteneur. Cela permet de "correctifs", généralement une révision marqueur (Majeur.Mineure.De révision). La branche est créée à partir de la version actuelle et fusionnées dans la nouvelle révision de marqueurs, comme Release 1.1.1. La Révision serait inversée intégrée à l' Development du conteneur Trunk lors de l'acceptation.

Nous pensons que cette structure est un juste équilibre entre robustesse et de la complexité. Mais il y a un peu de le harceler de questions que je ne peut logiquement s'insérer dans le modèle. Ils sont les suivants:

L'équipe de Construire - Development et Integration récipients sera d'abord commencer en se nightly builds, éventuellement de passer à l'Intégration Continue (CI). La Production de conteneurs seront fabriqués manuellement.

  • Où les définitions de build vivre? Edit - Basé sur un couple de réponses, la TeamBuildTypes dossier a été déplacé vers le tronc et les branches à conteneurs appropriés. Ce n'est, toutefois, conduire à une nouvelle question (ci-dessous).

  • En ayant la TeamBuildTypes dossier dans leurs conteneurs, est-ce à dire que toutes les définitions de build sera reproduit entre les dossiers appropriés? Par exemple, avoir une définition de build pour le développement de la qualité s'appuie, ainsi que testable, constructions, etc. toutes les personnes vivant dans tous les TeamBuildType dossiers tout au long de la structure.

La Génération de la Documentation - Nous utilisons des Châteaux de sable pour générer la documentation. Plus précisément, nous utilisons également Sandcastle Help File Builder pour gérer la sortie. Cela produit un fichier de projet dans un format propre à SFHB.

  • Devrait documentation générée être stockées dans la source de contrôle de la structure?

  • Devrait documentation être généré pour chaque conteneur, ou il ne fait que posséder une valeur pour la pré-production et de la qualité de la production s'appuie?

  • Pour préserver local rapide, les temps de réalisation, devrait création de documentation être la propriété d'une définition de build?

  • Où doit SHFB les fichiers spécifiques à vivre? Ma première idée est de le mettre en tant que pair à l' Source et Tests des dossiers. Je suis d'accord avec le recommondations qu'il soit un peer-to - Source et Tests. Schéma modifié pour refléter ce changement.

Troisième Partie Binaires

  • Devrait binaires (contrôles, les bibliothèques, etc.) être stockés dans le contrôle de code source?

  • Si oui, devrait-il être son propre Projet d'Équipe?

Documentation générale - Non-documentation générée, telles que les exigences, les documents de conception, plans de test, etc. ne vont pas être traduit par un dossier dans le contrôle de source de la structure. Après quelques recherches et discussions avec mes développeurs et les pairs, à l'aide de l'intégré dans le dossier Documents dans Team Explorer offre plus d'avantages, car il reflète la structure au sein de l'Équipe Projet de Portail et certains (d'affaires), les utilisateurs n'ont pas besoin de la complexité de l'apprentissage de la source de contrôle de l'aspect de la TSF.


Je vais mettre à jour la structure que je reçois des réponses aux questions de fournir une image plus claire. Je souhaite également la bienvenue à tout les autres commentaires relatifs à d'éventuelles modifications. Si j'ai d'autres questions, je ferai en sorte de modifier ce post.

Modifications:

  • Des précisions. Source et Tests des dossiers ne vivre sous l' Integration conteneur, ainsi.

  • Les deux Micah et Josh a apporté de grands points concernant la troisième partie binaires. Question relative à la question.

  • La génération de la Documentation peut être lent. Question ajoutée quant à savoir si la création de documentation doit être possédé par une Équipe spécifique au Type de Build.

  • Ajouté résolution relative à la non-documentation générée, telles que les exigences, les documents de conception, plans de test, etc.

  • Ajouté résolution relative à la TeamBuildTypes dossier de construction de définitions.

  • Basé sur divers commentaires, déplacé les TeamBuildTypes dossier de la branche trunk / niveaux.

6voto

JoshBerke Points 34238

J'aime bien ton idée de mettre les Châteaux de sable de fichiers de pair à la Source et de Tests, je voudrais ajouter un dossier de documentation, qui serait alors contenir les châteaux de sable de fichiers, et éventuellement de la documentation disponible.

Il y a certainement des différences d'opinions et je suis sûr que je vais être downvoted pour cela (depuis que j'ai eu avant). Je mettrais la documentation générée dans TFS pour un couple de raisons:

  1. Vous allez voulez que votre documentation avec chaque version, et l'utilisation de TFS est un facile d'approche pour assurer votre documentation reste dans la bonne place.
  2. Utilisation de TFS pour stocker cela signifie tout le monde saura où aller chercher de la documentation.

Une chose que je ne vois pas qui j'ai toujours du mal avec est l'endroit où le tiers des dépendances, il se pourrait qu'ils appartiennent à descendre sous la source de sorte qu'ils sont à chaque projet, bien que si vous souhaitez partager à travers des projets que vous pourriez ajouter un nouveau nœud de haut niveau.

Modifier

Pour ma binaires j'ai l'habitude jusqu'à la fin avec

$/Tiers/Entreprise/Produit/Version/Src(facultatif)

Ainsi, par exemple, j'ai

$/Tiers/ Microsoft/ EntLib/ 3.1 4.0 ComponentArt/ WebUI/ 2008.1/ Src

Je tiens à ajouter la source, j'ai eu de patch CA la source de ce que je déteste faire, mais lorsqu'un tiers n'a pas corrigé le bug, vous avez recours à ce.

4voto

Micah Points 28683

Excellente présentation et d'explication. J'ai lutté avec exactement les mêmes questions. J'ai retrouvé avec une structure très similaire. Mine varie légèrement.

Development/
   Trunk/
      Binaries/  -- Shared libraries
      Source/
      Test/
      Docs/      -- Documentation
TeamBuildTypes/  -- Build definitions
  • Ajouter les fichiers binaires dossier vous permet d'avoir un endroit dans la direction où tous vos projets de référence des bibliothèques partagées
  • Nous avons mis la documentation ici, donc il peut les voyages ainsi que la branche spécifique.
  • Nos définitions de build sont au niveau du développement, puisque nous pouvons les comprendre dans un seul endroit, toutes les branches, mais il pourrait certainement être au niveau de la branche, qui peut faire plus de sens.

Devrait binaires (contrôles, les bibliothèques,les etc.) être stockés dans le contrôle de code source? Si oui, devrait-il être propre Équipe Projet?

Je pense qu'ils devraient certainement être source contrôlée, mais je ne vois pas de raison de les mettre dans leur propre projet d'équipe. Une question d'être prudent avec TFS pour une raison quelconque traite les fichiers binaires légèrement différente. J'ai eu des problèmes où j'ai mis à jour les binaires dans le contrôle de source, mais "Obtenir plus tard" sur d'autres machines ne cause pas de mise à jour des fichiers. Parfois, vous devez faire "Get Version Spécifique" et cocher la case "Remplacer les Fichiers Inchangés" option pour ce fichier en particulier.

3voto

Eran Kampf Points 3285

Vous devriez mettre votre TeamBuilds dossier dans le coffre de votre véhicule. C'était impossible dans TFS2005 mais Microsoft a fixé pour 2008...

La raison pour cela est que votre construction peuvent changer avec la version la plus récente (par exemple: emballage des régimes, les différents tests etc.) qui peut le rendre incompatible avec les anciennes versions de maintenance. C'est pourquoi vous devez coupler l'équipe de la construction avec le code de la version.

De cette façon, disons que vous avez une version 1.0 et la mettre sous les Rejets de dossier. Vous serez en mesure de construire et d'émettre des correctifs tout en travaillant sur v2.0 dans le Développement de votre tronc (qui peut nécessiter la modification de la construction)

3voto

fuzzbone Points 1549

Pour vos binaires - évidemment, la seule binaires qui devrait être sous contrôle de version sont des "tiers", les assemblages que vous n'êtes pas "bâtiment" dans le cadre de tout système automatisé. Si vous avez vos propres bibliothèques que vous avez leur source sous contrôle de version, etc - vous devriez regarder les différentes stratégies pour la construction et la synchronisation etc.

J'ai ensuite de les organiser comme Josh et ensuite utiliser la ramification de "copier" les fichiers binaires à un _ExternalReferences dossier qui est un homologue du .NET des dossiers de Projet au sein de la solution de l'arbre. C'est une façon très efficace côté serveur en tant que Version de TFS contrôle stocke seulement les "Deltas" - donc, essentiellement, tous les "doubles emplois" binaires à travers de nombreux projets est essentiellement comme un "pointeur".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X