2009-03-11 8 views
4

J'essaie d'obtenir le numéro de révision d'un projet et de l'enregistrer dans une variable. Je sais que je peux obtenir le numéro de révision avec la commande svnversion mais je ne sais pas comment je peux le stocker. J'utilise l'invite de commande Windows régulière. Fondamentalement, je suis en train de faire quelque chose comme: mis svnVersion =% svnversion% mais je ne suis pas sûr de savoir comment ??Puis-je définir une variable d'environnement avec le numéro de révision SVN d'un projet?

+0

Avez-vous vraiment besoin de le faire dans un fichier batch? Si c'est pour un système de construction de projet alors il pourrait y avoir des moyens plus faciles de le faire, par exemple en combinaison avec ant dans le monde Java. – amarillion

+0

Je recommande fortement de passer à n'importe quel système d'exploitation de la famille Unix/Linux si vous voulez faire quelque chose avec la ligne de commande pour quelque chose. – Eonil

Répondre

1

La sous-commande "svn info" vous indiquera le numéro de révision dans votre copie de travail.

7

Pour définir la sortie de la variable à la sortie de svnversion dans un fichier batch, vous devez faire ceci:

for /f "delims=" %%a in ('svnversion') do @set myvar=%%a 

echo %myvar% 

approche différente: Si vous avez TortoiseSVN vous pouvez également utiliser SubWCRev.exe. Voir get the project revision number into my project? ou Automatic SVN Revision Numbering in ASP.Net MVC

+0

Dans un fichier batch, vous devez doubler les signes% de la variable 'for'. – Joey

+0

vous avez raison. Merci. édité la réponse. – f3lix

+0

en fait, je pense que single% est le bon choix. Au moins, c'est comme ça que ça marche sur mon système – user62958

2

En bash (via Cygwin):

svn info | grep -i "Revision" | cut -d ' ' -f 2 

Vous pouvez alors l'utiliser dans un script shell bash pour stocker la valeur dans une variable.

+1

Je ne suis pas sûr que la plupart des gens lancent bash comme leur "invite de commande Windows régulière" ;-) –

+0

Vous avez raison, alors j'ai ajouté -> Cigwin :) – BryanH

1

Quelque chose comme:

svn version > ver.txt 
set /p ver= < ver.txt 
del ver.txt 
echo %ver% 
3

Si vous avez besoin de ce à partir d'un dépôt distant (comme non vérifié localy) vous pouvez le faire

for /f "delims=: tokens=1,2" %%a in ('svn info %SVN_REPO_URL%') do (
    if "%%a"=="Revision" (
    set /a RELEASE_REVISION=%%b 
) 
) 

J'utilise dans mon processus de libération pour saisir le numéro de révision d'une étiquette.

+0

C'est génial, merci! –

0

Voici une alternative qui utilise un tuyau à findstr pour obtenir une seule ligne:

FOR /F "tokens=2" %%G IN ('svn info ^| findstr /B Revision:') DO SET SVN_REVISION=%%G 
echo SVN_REVISION: %SVN_REVISION% 

FOR /F "tokens=2" %%G IN ('svn info ^| findstr /B URL:') DO SET SVN_URL=%%G 
echo SVN_URL: %SVN_URL% 
Questions connexes