Comment puis-je synchroniser le numéro de révision SVN avec mon site Web ASP.NET?

Stack Overflow a un numéro de version subversion en bas:

révision svn: 679

Je veux utiliser un tel versioning automatique avec mon Site Web / Application .NET, Windows Forms, WPD projets / solutions.

Comment puis-je l'implémenter?

0
ajouté édité
Vues: 10
@Balloon Si vous utilisez TortoiseSVN, vous pouvez utiliser SubWCRev programme. Il interroge une copie de travail et vous indique seulement le numéro de révision le plus élevé. Certes, cela semble être une approche côté client pour un problème côté serveur, mais comme il s'agit d'un bon programme en ligne de commande, vous devriez être en mesure de capturer sa sortie pour l'utiliser assez facilement.
ajouté l'auteur nickf, source
Si vous n'utilisez pas TortoiseSVN pour SubWCRev comme je l'ai dit ici , vous pouvez utiliser svnversion qui fait la même chose.
ajouté l'auteur nickf, source

7 Réponses

Vous pouvez le faire en ajoutant ce qui suit n'importe où dans votre code

$Id:$

Ainsi, par exemple @Jeff a fait:

<div id="svnrevision">svn revision: $Id:$</div>

et quand vérifié dans le serveur remplacé $ Id: $ avec le numéro de révision en cours. J'ai aussi trouvé cette référence .

There is also $Date:$, $Rev:$, $Revision:$

0
ajouté
Vous devez vous assurer que les fichiers ont bien l'attribut svn: keywords, sinon $ Id $ etc. ne sont pas remplacés automatiquement. Voir cette page . (Faites défiler jusqu'à svn: mots-clés)
ajouté l'auteur Michael Stum, source
Je viens d'essayer cela en utilisant $ Rev $ et ça marche - dans une certaine mesure. Le problème est qu'il semble mettre à jour le mot-clé uniquement lorsque le fichier dans lequel il apparaît est modifié. Cela signifie que si des modifications sont apportées au projet sans affecter le fichier $ Rev $ (dans mon cas, ma page maître ASP.NET), le projet aura une révision plus élevée que celle affichée à l'utilisateur . Quelqu'un a-t-il des idées à ce sujet? Existe-t-il un moyen pour que SVN mette toujours à jour les mots-clés dans le fichier?
ajouté l'auteur Chris Roberts, source
Cela ne va-t-il pas simplement insérer le numéro de révision de la dernière modification dans ce fichier particulier? J'ai essayé de mettre en place un référentiel à deux fichiers et en ai changé un, et j'ai essayé à la fois l'export et le checkout, et l'autre fichier est resté à 1 dans les deux cas.
ajouté l'auteur Lasse Vågsæther Karl, source
Vous avez raison, vous devez utiliser un mécanisme différent.
ajouté l'auteur Lasse Vågsæther Karl, source
En utilisant VisualSVN et TortoiseSVN, l'ajout de $ Id: $ a simplement provoqué le rendu de la page "$ Id: $". Il peut être utile de noter quel serveur / client fonctionne cette réponse.
ajouté l'auteur Travis, source
Vous devez également ajouter la propriété svn: keywords Subversion au fichier et assurez-vous qu'elle inclut la valeur Id . Cependant, il est peu utile: ce fichier particulier n'a peut-être pas été modifié.
ajouté l'auteur Álvaro González, source
lassevk est correct, cela ne change que lorsque le fichier lui-même change.
ajouté l'auteur Bruno Lopes, source

On dirait que Jeff utilise CruiseControl.NET basé sur certains feuillets à travers les transcriptions podcast. Cela semble avoir automatisé les capacités de déploiement du contrôle de la source à la production. Est-ce que c'est là que l'insertion se passe?

0
ajouté
le lien est rompu @saint_groceon
ajouté l'auteur Cacho Santa, source
Si vous n'utilisez pas CruiseControl.Net alors consultez ma réponse (plug sans vergogne!) - stackoverflow.com/questions/163/… ; o)
ajouté l'auteur Andrew, source

$rev and others like it are revisions for the individual files, so they won't change unless the file changes. The number on the webpage is (most likely, I'm assuming here) the svn revision number for the whole project. That is different than the file revisions, which others have been pointing to.

Dans ce cas, je suppose que CCNET tire le numéro de révision du projet et réécrit une partie de la page Web avec ce numéro. Toute solution de CI devrait être capable de faire cela, de créer moi-même avec CCNET et Teamcity (bien que ce ne soit pas des pages web, mais un versionnement automatique des versions de déploiement / assemblage).

Pour ce faire, utilisez une solution CI qui le prend en charge ou utilisez votre processus de génération (MSbuild / Nant) pour stocker cette version et l'écrire dans les fichiers avant de la "déployer".

0
ajouté

To add to @BradWilson's answer: "You could also get your source control provider to provide the source revision number if you want"

Pour connecter Subversion et MSBuild: Projet de tâches communautaires MSBuild

0
ajouté

@Ballon Si vous utilisez TortoiseSVN, vous pouvez utiliser le programme SubWCRev . Il interroge une copie de travail et vous indique seulement le numéro de révision le plus élevé. Certes, cela semble être une approche côté client pour un problème côté serveur, mais comme il s'agit d'un bon programme en ligne de commande, vous devriez être en mesure de capturer sa sortie pour l'utiliser assez facilement.

0
ajouté

Nous faisons cela avec xUnit.net pour nos builds automatisés. Nous utilisons CruiseControl.net (et essayons TeamCity). La tâche MSBuild que nous exécutons pour l'intégration continue modifie automatiquement le numéro de génération pour nous, de sorte que le fichier ZIP de construction résultant contient un jeu de DLL et d'EXE correctement versionnés.

Our MSBuild file contains a UsingTask reference for a DLL which does regular expression replacements: (you're welcome to use this DLL, as it's covered by the MS-PL license as well)

  

Ensuite, nous extrayons le numéro de build, fourni automatiquement par le système CI. Vous pouvez également demander à votre fournisseur de contrôle source de fournir le numéro de révision source si vous le souhaitez, mais nous avons trouvé le numéro de version dans le système CI plus utile car non seulement vous pouvez voir les résultats d'intégration par le numéro de build CI. lien vers le ou les changements qui ont été inclus dans la construction.

 <!-- Cascading attempts to find a build number -->

 
   $(BUILD_NUMBER)
 
 
   $(ccnetlabel)
 
 
   0
 

(Nous essayons BUILD_NUMBER, qui est de TeamCity, puis ccnetlabel, qui est de CC.net, et si aucun n'est présent, nous avons par défaut 0, de sorte que nous puissions tester le script de construction automatisé manuellement.)

Ensuite, nous avons une tâche qui définit le numéro de build dans un fichier GlobalAssemblyInfo.cs que nous lions dans tous nos projets:

 
   
   
 

Cela trouve l'attribut AssemblyVersion et remplace le numéro de version a.b.c.d par a.b.c.BuildNumber. Nous allons généralement laisser la source vérifiée dans l'arborescence avec les trois premières parties du numéro de constructeur fixées, et la quatrième à zéro (c'est-à-dire, aujourd'hui, c'est 1.0.2.0).

Dans votre processus de génération, assurez-vous que la tâche SetVersionNumber précède votre tâche de génération. À la fin, nous utilisons notre tâche Zip pour compresser les résultats de construction afin que nous ayons un historique des binaires pour chaque génération automatisée.

0
ajouté

Si vous utilisez ASP.Net MVC (comme le fait StackOverflow), j'ai écrit un facile à suivre en 3 étapes sur la façon dont pour obtenir automatiquement et afficher la dernière révision SVN . Le guide a été inspiré en pensant à moi-même à propos de cette question même! : o)

0
ajouté
le lien est brisé ou le site est en panne
ajouté l'auteur Cacho Santa, source
Merci @cacho, corrigé - c'était une erreur de serveur [sic]; o)
ajouté l'auteur Andrew, source
Fixé! merci de me le faire savoir: o)
ajouté l'auteur Andrew, source
Ça a l'air génial, Lien cassé quand même!
ajouté l'auteur Peter C, source
Ce fut une excellente solution pour nous d'automatiser l'affichage d'un versionnement basé sur nos révisions SVN. Un avantage est qu'il ne nécessite pas d'appel à votre serveur SVN.
ajouté l'auteur Ben Elder, source