Могу ли я установить переменную среды с номером версии SVN проекта?

Я пытаюсь получить номер версии проекта и сохранить его в переменной. Я знаю, что могу получить номер версии с помощью команды svnversion, но не знаю, как его сохранить. Я использую обычную командную строку Windows. В основном я пытаюсь сделать что-то вроде: set svnVersion= %svnversion%, но я не знаю, как это сделать??


person user62958    schedule 11.03.2009    source источник
comment
Вам действительно нужно сделать это в пакетном файле? Если это для системы сборки проекта, то могут быть более простые способы сделать это, например, в сочетании с ant в мире Java.   -  person amarillion    schedule 12.03.2009
comment
Я настоятельно рекомендую переключиться на любую операционную систему семейства unix/linux, если вы хотите сделать что-то с командной строкой для чего угодно.   -  person eonil    schedule 16.12.2010


Ответы (7)


Чтобы установить вывод переменной в вывод svnversion в пакетном файле, вы должны сделать следующее:

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

echo %myvar% 

Другой подход: если у вас есть TortoiseSVN, вы также можете использовать SubWCRev.exe. См. получить номер версии проекта в мой проект? или Автоматическая нумерация версий SVN в ASP.Net MVC

person f3lix    schedule 11.03.2009
comment
В пакетном файле вам придется удвоить знаки % для переменной for. - person Joey; 11.03.2009
comment
на самом деле я думаю, что один % - правильный выбор. По крайней мере, так это работает в моей системе. - person user62958; 12.03.2009

Если вам это нужно из удаленного репозитория (например, не проверено локально), вы можете сделать это

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

Я использую это в своем процессе выпуска, чтобы получить номер версии из тега.

person StocksR    schedule 08.03.2010

В bash (через Cygwin):

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

Затем вы можете использовать это в сценарии оболочки bash для сохранения значения в переменной.

person BryanH    schedule 11.03.2009
comment
Я не уверен, что большинство людей запускают bash как обычную командную строку Windows ;-) - person Steven Robbins; 11.03.2009

Подкоманда "svn info" сообщит вам номер ревизии в вашей рабочей копии.

person Ken Liu    schedule 11.03.2009

Что-то типа:

svn version > ver.txt
set /p ver= < ver.txt
del ver.txt
echo %ver%
person Steven Robbins    schedule 11.03.2009

Посмотрите, поможет ли это: Изменить номер версии

person Jedi Master Spooky    schedule 11.03.2009

Вот альтернатива, которая использует конвейер для findstr для получения одной строки:

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%
person s3v1    schedule 19.08.2014