2009-02-19 6 views
2

Nous sommes une équipe de 4 personnes et nous n'avons pas été loin de notre zone de confort depuis plusieurs années, mais nous sommes en pleine croissance et nous aimerions rattraper le temps. J'ai été chargé de trouver la meilleure façon de mettre en œuvre l'intégration continue (builds automatisés, branchement pour la maintenance du code et de nouvelles fonctionnalités, etc.). Nous envisageons de passer de SourceSafe 2005 à Subversion pour gérer notre contrôle de version. D'après ce que j'ai lu, Subversion est un choix bien meilleur pour faire la promotion de code, les branches, et la fusion entre les branches. Nous allons probablement utiliser les produits suivants:Meilleure configuration pour la promotion de code et le branchement de fonctionnalités dans Subversion?

  • VisualSVN serveur
  • TortoiseSVN (pour l'intégration avec Windows Explorer)
  • VisualSVN (pour l'intégration avec Visual Studio 2005)
  • SVNVB6 (pour l'intégration avec Visual Basic 6)
  • FinalBuilder

Quelle est la meilleure façon d'organiser le dépôt de promotion et de fonctionnalité du code ramification? Voici un exemple de notre structure actuelle SourceSafe:

  • racine
    • Visual Studio 2005 Projets
      • ProjectName
        • fichier Solution, les fichiers de projet et fichiers code ici
        • \ bin
          • \ Release
            • binaires de libération compilons
    • Visual Basic 6 projets
      • ProjectName
        • Les fichiers de projet et le code fichiers ici
        • binaires compilés (.dll, .exe, .ocx) ici
    • Documentation
      • fichiers Documentation ici

Devrions-nous structurer comme ça?

  • racine
    • branches (branche à partir de chaque tronc)
      • Development.FeatureA
      • Development.FeatureB
      • Test (nocturne intégré avec FinalBuilder ???)
      • production (Construit tous les soirs avec FinalBuilder ???)
      • Production.BugFixA (Intégration inverse à la branche de production, branche d'essai, et le tronc ???)
    • balises
      • Development.v1 (marqué après chaque construction réussie)
      • Development.v2
      • Development.v3
      • Test.v1
      • Test.v2
      • Test.v3
      • Production.v1
      • Production.v2
      • Production.v3
    • tronc (code de développement - nuit Construit avec FinalBuilder)
      • Stoudion 2005 projets Visual
        • ProjectName
          • Solution fichier ici
          • ProjectName
            • fichiers du projet et le code des fichiers ici
      • Visual Basic 6 projets
        • ProjectName
          • fichiers du projet et fichiers code ici

Depuis une grande partie de notre logiciel est encore COM (VB6) et doit être enregistré (en utilisant regsvr32), si les binaires être sous contrôle de version? Comment devrions-nous gérer l'enregistrement/désenregistrement des composants lorsque nous devons travailler sur les différentes branches (éventuellement avec une compatibilité COM différente)?

Sommes-nous loin du but?

Répondre

2

Tout d'abord, ne pas utiliser une des branches du tronc de haut niveau balises, utilisez un par branches du tronc projet Tags comme ceci:

/Projects 
    /CashCowProject 
    /branches 
    /tags 
    /trunk 
     /vs 
     /doc 

Cela signifie que les outils tracker peuvent regarder http://svn/Projects/CashCowProject et voir toutes les activités sur ce projet, et ne pas avoir d'activité sur un autre projet. Cela vous oblige également à contrôler les références entre les projets, ce qui signifie que vos projets de haut niveau ne changeront pas sans une entrée dans le tronc. Lorsque les projets se réfèrent les uns aux autres, utilisez svn: externals pour extraire une étiquette du projet de bibliothèque dont vous avez besoin. Utilisez les branches du fournisseur comme décrit dans le livre des haricots rouges pour gérer les bibliothèques tierces, même les binaires. Garder les binaires de bibliothèque dans SVN est ok. Peut-être voudrez-vous envisager un dépôt séparé pour cela, bien que nous ne le fassions pas.

Pour la promotion de code, conservez une branche stable pour une version particulière et ne fusionnez jamais que dans la branche, puis marquez cette branche. Cela vous donnera un enregistrement vérifiable de ce qui est dans chaque version.

Vous pouvez conserver les binaires COM là-dedans si vous ne voulez pas extraire la source et la construire. Vous pouvez écrire un script de post-mise à niveau pour tortue qui ira enregistrer tous les objets COM qu'il trouve.

Questions connexes