Получение текущего номера версии в командной строке через TortoiseSVN

Я пытаюсь написать пакетный файл, в котором мне нужна ревизия HEAD проекта, над которым я работаю.

Есть ли команда, чтобы получить это из командной строки?

Я нахожусь на компьютере с Windows XP.

ИЗМЕНИТЬ Я закончил тем, что использовал сочетание Shambulator, mizipzor и Stefan. Я закончил с этим:

for /f "tokens=5" %%i in ('SubWCRev WorkingCopyPath^|find "Last committed at revision"') do set version=%%i 
echo %version%

Спасибо за вашу помощь ребятам

Добавил этот ответ в список ниже.

Ответы

Ответ 1

Это неудобно без возможностей текстовой обработки * nix, но этот командный файл делает это:

@echo off
for /f "tokens=2" %%i in ('svn info -rHEAD svn://localhost^|find "Revision"') do @echo %%i

Замените репозиторий svn для моего svn://localhost.

svn info получает информацию о репозитории, затем передает ее на find, которая удаляет все, кроме строки, содержащей номер версии. Команда for дает вам второй "токен" на этой строке (первый - Revision:).

EDIT. Как уже упоминалось ранее, вам понадобится версия Subversion для командной строки и svn.exe на вашем PATH.

Ответ 2

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

Ответ 3

В итоге я использовал сочетание Shambulator, mizipzor и Stefan. Я закончил с этим:

for /f "tokens=5" %%i in ('SubWCRev WorkingCopyPath^|find "Last committed at revision"') do set version=%%i  
echo %version% 

Спасибо за вашу помощь ребятам

Ответ 4

TortoiseSVN не дает вам никакого интерфейса командной строки, поскольку это просто расширение оболочки.

Однако, если вы установите инструменты командной строки svn, следующая команда даст вам информацию о URL-адресе SVN:

svn info [SVN-URL]

чтобы извлечь ревизию, вы можете использовать это:

svn info [SVN-URL] | grep Revision | awk '{print $2}'

(предполагается, что у вас установлены некоторые инструменты UNIX, например cygwin)

Ответ 5

В текущем списке ответов указывается, как печатать текущую версию центрального репозитория svn. Если вы заинтересованы в текущей локальной проверенной версии, я нашел это сообщение в блоге, которое делает что-то очень похожее на что сделано в Ответ Shambulator:

@echo off
FOR /F "tokens=2 skip=4" %%G IN ('svn info --revision HEAD') DO ^
IF NOT DEFINED REVISION SET REVISION=%%G
echo %REVISION%

Ответ 6

Я знаю, что этот вопрос старый, но это было именно то, что я искал, только проблема заключалась в том, что я не мог получить ответ на работу. Здесь bat script я закончил с:

set SubWCRev=C:\Program Files\TortoiseSVN\bin\SubWCRev.exe
set WorkingCopyPath=%~dp0
for /f "tokens=5" %%i in ('""%SubWCRev%" "%WorkingCopyPath%.""') do set version=%%i
@echo Version=%version%

Я использовал каталог, в котором файл bat находился в папке репозитория SVN, используйте% ~ dp1, который вы хотите передать в каталог как параметр

Ответ 7

Я не думаю, что это можно сделать прямо из командной строки, используя tortoisesvn. Вы можете установить версию командной строки из Collabnet, а затем использовать такую ​​команду:

c:\>svn ls -v svn://server/Source
67336 user1                Jul 05 13:00 ./
67336 user1                Jul 05 13:00 Source/

Ответ 8

Другой возможный подход. Если вы выбрали репозиторий, файл .svn\entries имеет номер версии в 4-й строке. то есть.

head -4 entries | tail -1

предоставит вам номер версии.

возможно, не все, что разумно использовать, поскольку формат файла может измениться - это действительно зависит от того, является ли script только для личного использования

Ответ 9

svn info -rHEAD %cd%|find "Revision:"> %temp%\__svnrev.tmp
set /p revision=< %temp%\__svnrev.tmp
del %temp%\__svnrev.tmp
set revision=%revision:~10%
echo %revision%

измените% cd% в первой строке на нужный путь

Ответ 10

Вот мой вариант ответа shambulator, если у вас нет svn.exe в PATH. Обратите внимание на использование backquotes для обработки пробелов в пути.

@echo off
set SVN_EXE=C:\Program Files (x86)\VisualSVN\bin\svn.exe

rem Find revision of entire repository
for /f "usebackq tokens=2" %%i in (`call "%SVN_EXE%" info -rHEAD https://svnroot/repo^|find "Revision"`) do @echo %%i

rem Find revision of a path in the repository
for /f "usebackq tokens=4" %%i in (`call "%SVN_EXE%" info -rHEAD https://svnroot/repo/project/trunk^|find "Last Changed Rev"`) do @echo %%i