39 votes

Obtenir le numéro du référentiel Subversion dans le code

J'aimerais mettre en œuvre un moyen de l'enregistrement de la version d'un projet de code, de sorte qu'il peut être utilisé lors de l'essai et du suivi des bogues. Il semble que le meilleur numéro de la version à utiliser serait juste de la révision en cours nombre de Subversion. Est-il un moyen facile de crochet de ce nombre en C++ dans mon cas) fichier d'en-tête ou quelque chose, qui je peux alors obtenir dans le code? Je suppose que c'est un post-commit hook ou quelque chose?

Quelqu'un a une expérience de mise en œuvre de ce (avec le code de l'action, s'il vous plaît?), ou peut proposer une meilleure alternative? Merci.

28voto

jmanning2k Points 3354

De deux façons:

Incorporer $Id$ ou $Revision$ dans le code. Puis définissez la propriété svn:keywords="Id"Révision de la propriété sur le fichier. Cela vous donnera la dernière modification de la révision de ce fichier source. Bon pour les petits projets et les scripts.

Vous pouvez également utiliser un Makefile conduit processus et de l'outil de ligne de commande svnversion. (Spécifique à une langue - cela devrait fonctionner pour le C/C++)

echo -n "#define VERSION 1.0.1-" > version.h
svnversion -n . >> version.h

Ou d'autres plus complexes script de build avec sed et de la version.h.dans. Puis juste #include version.h

Qui vous donnera le référentiel numéro de version, qui va changer avec chaque commit / update, et est probablement plus approprié de numéro de version pour la plupart des projets.

Note: j'ai également utilisé un lisible chaîne de version que j'ai mise à jour manuellement. L'exemple donnerait: Version: 1.0.1-r13445

~J

14voto

Rob Points 31432

Tandis que la chouette, la révision mot-clé astuce seulement des mises à jour lorsque le fichier est modifié dans le cadre de cette révision - si vous ne modifiez pas le fichier, il continuera à refléter l'ancienne version.

Si vous voulez que le logiciel à toujours compte de l'ensemble des numéro de révision, alors vous aurez à plonger dans le SVN correspondant entrées de fichier et l'extraire, ce qui n'est pas trop difficile (c'est un fichier XML).

Wikipédia n'est présent sur leur version de la page pour indiquer la version du logiciel qui est de la course en direct; le code est là - la recherche de la getSvnRevision() méthode.

13voto

Bill Points 4521

Vous pouvez également utiliser SubWCRev qui fait partie de TortoiseSVN.

SubWCRev est un programme console Windows qui peut être utilisé pour lire l'état d'une copie de travail Subversion et éventuellement effectuer la substitution de mots clés dans un fichier de modèle. Ceci est souvent utilisé comme partie du processus de création comme un moyen de l'intégration de la copie de travail de l'information dans l'objet en cours de création. Typiquement, il peut être utilisé pour inclure le numéro de révision dans une boîte "a Propos".

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html

6voto

iCoder Points 149

dans votre Makefile, ajoutez:

 SVNDEV := -D'SVN_REV="$(shell svnversion -n .)"'
CFLAGS := $(SVNDEV) ...
 

alors vous pouvez utiliser la macro SVN_REV n'importe où dans votre code, par exemple:

 printf ("Version: SVN %s\n", SVN_REV);
 

4voto

Vincent Robert Points 16530

Vous pouvez utiliser la propriété svn:keywords pour activer le mot clé Rev .

Vous pouvez ensuite utiliser $Rev$ dans votre code et SVN le développera automatiquement lors de la mise à jour vers $Rev: 256 $ qui pourra ensuite analyser ...

Plus d'informations sur le manuel Subversion

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