2009-03-11 5 views
4

Ich versuche, die Revisionsnummer eines Projekts zu erhalten und es in eine Variable zu speichern. Ich weiß, dass ich die Revisionsnummer durch den Befehl svnversion bekommen kann, aber ich bin mir nicht sicher, wie ich es speichern kann. Ich verwende die normale Windows-Eingabeaufforderung. Im Grunde versuche ich so etwas wie: set svnVersion =% svnversion%, aber ich bin mir nicht sicher, wie ??Kann ich eine Umgebungsvariable mit der SVN-Revisionsnummer eines Projekts festlegen?

+0

Haben Sie es in einer Batch-Datei wirklich tun muss? Wenn es für ein Projekt-Build-System ist, dann könnte es leichtere Möglichkeiten geben, es zu tun, zum Beispiel in Kombination mit ant in der Java-Welt. – amarillion

+0

Ich empfehle dringend zu jedem Betriebssystem der Unix/Linux-Familie wechseln, wenn Sie etwas mit der Befehlszeile für alles tun wollen. – Eonil

Antwort

1

Der Unterbefehl "svn info" teilt Ihnen die Revisionsnummer in Ihrer Arbeitskopie mit.

7

Um die Ausgabe der Variablen mit dem Ausgang des svnversion in einer Batch-Datei gesetzt, Sie haben, dies zu tun:

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

echo %myvar% 

anderen Ansatz: Wenn Sie haben TortoiseSVN können Sie auch verwenden SubWCRev.exe. Siehe get the project revision number into my project? oder Automatic SVN Revision Numbering in ASP.Net MVC

+0

In einer Batch-Datei müssten Sie die% -Zeichen für die Variable 'for' verdoppeln. – Joey

+0

Sie haben Recht. Vielen Dank. bearbeitet die Antwort. – f3lix

+0

eigentlich denke ich Single% ist die richtige Wahl. Zumindest funktioniert das auf meinem System – user62958

2

In bash (via Cygwin):

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

Sie dann, dass in einem Bash-Shell-Skript verwenden, um den Wert in einer Variablen zu speichern.

+1

Ich bin mir nicht sicher, ob die meisten Leute Bash als ihre "normale Windows-Eingabeaufforderung" ausführen ;-) –

+0

Du hast Recht, also habe ich hinzugefügt -> Cigwin :) – BryanH

1

Etwas wie:

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

Wenn Sie diese von einer Remote-Repository (wie in nicht localy ausgecheckt) können Sie dies

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

ich diese verwenden in meinem Release-Prozess zu greifen die Revisionsnummer von einem Tag.

+0

Das ist großartig, danke! –

0

Hier ist eine Alternative, die ein Rohr verwendet eine einzelne Zeile findstr zu bekommen:

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% 
Verwandte Themen