Получение текущего номера ревизии в командной строке через TortoiseSVN - PullRequest
13 голосов
/ 05 июля 2010

Я пытаюсь написать командный файл, в котором мне нужна версия 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%

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

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

Ответы [ 11 ]

26 голосов
/ 05 июля 2010

Это неудобно без возможностей обработки текста * 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 для командной строки, и на вашем PATH.

установлена ​​svn.exe.
3 голосов
/ 05 июля 2010

Я закончил тем, что использовал смесь Shambulator, mizipzor и ответов Стефана. Я закончил с этим:

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

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

3 голосов
/ 05 июля 2010

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

1 голос
/ 08 октября 2013

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

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, если вы хотите передать каталог в качестве параметра

1 голос
/ 05 июля 2010

Список текущих ответов, как распечатать текущую ревизию в центральном хранилище SVN. Если вам интересна текущая локальная проверенная ревизия Я нашел эту запись в блоге , которая делает нечто очень похожее на то, что сделано в Ответе Шамбулятора :

@echo off
FOR /F "tokens=2 skip=4" %%G IN ('svn info --revision HEAD') DO ^
IF NOT DEFINED REVISION SET REVISION=%%G
echo %REVISION%
1 голос
/ 05 июля 2010

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

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

svn info [SVN-URL]

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

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

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

0 голосов
/ 05 июня 2018

Это кажется проще, чем все предыдущие ответы:

svnlook youngest <repo-path>

Возвращает один номер ревизии.

0 голосов
/ 22 февраля 2016

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

@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
0 голосов
/ 14 марта 2015
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% в первой строке на желаемый путь

0 голосов
/ 05 июля 2010

Еще один возможный подход.Если вы извлекли хранилище, то файл .svn \ records содержит номер редакции в 4-й строке.то есть

head -4 entries | tail -1

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...