Получение текущего номера версии в командной строке через 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