2010-07-28 10 views
7

J'ai une application asp.net/C# qui utilise subversion pour le contrôle de la source.Build Version vs numéro de révision

Mon application augmente automatiquement AssembleVersion et AssemblyFileVersion sur chaque build qui fonctionne comme un charme, et affiche le numéro de build dans le côté administration du site. Nous gardons trace de AssembleVersion et AssemblyFileVersion lorsque nous déployons, cependant, lorsqu'un problème survient et que nous devons revenir à une certaine version, nous n'avons aucune idée de la révision à cibler dans Subversion.

J'ai quelques idées:

  1. Enregistrer AssembleVersion comme commentaire dans chaque fichier
  2. un mot clé dans commit commentaires get remplacé par AssembleVersion sur chaque Commit (encore besoin de savoir comment le faire)

Toute aide et suggestions seront appréciés

Mise à jour: L'option "1" est en fait une idée stupide, car cela signifie qu'à chaque fois que je construirai, tous les fichiers seront marqués comme mis à jour et quand je commettrai, chaque fichier sera mis à jour

+0

semble que tout le monde pointe vers "tags". Toute idée où je peux obtenir un tutoriel sur les tags? et comment les créer? *** Je n'ai jamais entendu parler des tags *** –

+0

Voir le lien que j'ai fourni. :) –

Répondre

4

Lorsque je compile, je mets ce numéro de construction partout.

  • Je l'ai mis dans un tag dans svn.
  • Je l'ai mis dans les métadonnées d'assemblage de chaque assemblage que je construis.
  • Je l'ai ajouté à la fin du nom de fichier dans mes programmes d'installation. Je l'ai placé dans le pied de page de chacune de mes pages Web déployées. Je l'ai mis dans le pied de mes rapports.
  • Je l'ai mis dans l'écran de démarrage de mes applications côté client.
  • Je l'ai mis dans l'écran de bienvenue pour mes installateurs.

La seule chose que je ne mets pas dedans est mon café, qui I take black. Tout cela permet à un mainteneur de savoir d'un coup d'œil exactement d'où vient le code pour ce qu'il voit, s'il regarde une page Web, ou s'il regarde les propriétés de l'un des assemblys construits dans Explorer, ou peu importe.

+0

ouais ... c'est ce que je travaille vers, mais je ne sais pas comment créer les tags si :( –

+0

tout ce que vous avez à faire utilise le "svn copy" commande, et cela va créer une balise où vous voulez.Tout un tag est une "copie", qui est implémentée comme un "pointeur" dans Subversion.Vous devez exécuter cette commande dans votre fichier de construction ou à l'intérieur de Votre système de gestion de build CruiseControl, par exemple, fait ce tag pour vous juste en configurant votre projet correctement –

+2

Désolé, je ne suis pas d'accord pour ne pas le mettre dans votre café, mais comment pouvez-vous savoir qu'il en reste? la veille? –

4
+0

Peut-être que je devrais gratter sur subversion, car même après avoir lu les exemples "simples" et "complexes", je ne sais toujours pas par où commencer avec les balises –

+0

Je pense que cela dépend de la façon dont vous utilisez subversion, Si vous utilisez quelque chose comme la tortue SVN ou depuis la ligne de commande, les exemples du livre sont des exemples d'utilisation des outils de ligne de commande. Je vous recommande de jeter un oeil au reste du livre si vous voulez rafraîchir http://svnbook.red-bean.com/ –

+0

ouais, j'utilise des outils comme la tortue et ankh, je n'ai jamais utilisé la ligne de commande (purement parce que je n'avais pas besoin de), mais je suis en train de lire maintenant :) –

2

Vous pouvez marquer le tronc de Subversion avec le AssembleVersion ou AssemblyFileVersion, selon le plus logique.

Vous pouvez également suivre le numéro de révision de Subversion de la même manière que vous effectuez le suivi des versions AssembleVersion et AssemblyFileVersion lors du déploiement.

2

Appliquez une étiquette à votre arborescence source après avoir mis à jour les codes AssemblyVersion et AssemblyFileVersion.

2

Vous pouvez "branchez pour la libération". Avant de créer une version, vous pouvez créer une branche sur la nouvelle branche et créer une étiquette sur la nouvelle branche avec le numéro de version.

   + release tag 
      /
      +--------------------- release branch 
     / 
----------+----------------------------------------------------- trunk 

Cela vous permettrait de garder une trace de toutes les versions individuelles dans SVN. Cela vous permettrait également de faire des corrections de bogues isolées sur les branches de publication qui pourraient être publiées en tant que correctifs. La correction de bogue pourrait ensuite être fusionnée dans le coffre.

   +     + patch release tag 
      /    /
      +-----------------+-+---- release branch 
     /     | merged fix into trunk... 
----------+----------------------------------------------------- trunk 
3

Les balises ne sont pas vraiment utiles si vous construisez souvent. Peut-être trouver un moyen de mettre à jour la version d'assemblage basée sur la révision svn à la place? Incluez également le nom de la branche, car ils partagent les révisions.

Et vous devriez être en mesure d'extraire la version d'assemblage dans vos pages ASP.NET et l'imprimer par programme dans un pied de page ou quelque chose.

+0

J'ai réussi à obtenir le numéro de révision de svn en utilisant http://sharpsvn.open.collab.net/ (SharpSVN), mais cela crée un peu de douleur ... pourquoi?!? .... bien, quand exactement le dites-vous pour vérifier la version, et où l'enregistrez-vous? –

+0

Tehre est une tâche personnalisée appelée AssemblyInfoTask qui met à jour assemblyversion à la construction, de sorte que vous pouvez utiliser une tâche comme ça. Cependant, il faudra peut-être peaufiner le numéro de révision pour l'obtenir. Je ne l'ai pas utilisé moi-même, car nous avons utilisé la solution la plus simple: exporter un fichier texte avec le numéro de révision inclus dans le site Web, juste comme un indice pour nous. L'inconvénient est que nous ne pouvons pas voir le numéro de révision sur notre DLL – jishi

2

Les étiquettes/branches sont certainement l'approche recommandée ici.

Vous pouvez également (ou en plus) inclure le numéro de révision svn dans votre AssemblyInfo. Une approche consiste à utiliser la tâche AssemblyInfo du projet msbuildtasks à http://msbuildtasks.tigris.org

Pour plus d'informations, google msbuild svn revision assemblyinfo

Vous pourrait alors faire sans tags/branches, comme vous pouvez toujours vérifier une révision spécifique, et/ou créer une branche à partir d'une révision spécifique.

0

Une autre option consiste à utiliser la dernière révision modifiée comme numéro de build. Cela signifie que chaque fois que vous construisez votre auto-tag. C'est facile avec hudson/jenkins puisque vous avez une variable d'environnement SVN_REVISION. Le problème est que le nombre de révision devient très grand et les discussions de couloir sur 1.0.0.20456 vs 1.0.0.20489 sont une bouchée.

Questions connexes