обнаруживать изменения SVN в .bat - PullRequest
9 голосов
/ 03 октября 2008

У меня есть .bat и внутри .bat. Я хотел бы выполнить специальный код, если в репозитории svn есть какая-то модификация (например, compile).

Ответы [ 5 ]

6 голосов
/ 03 октября 2008

Для Win 2000 и более поздних версий это назначит последнюю выходную строку из команды svn status переменной svnOut, а затем проверит, содержит ли переменная что-либо:

@echo off
set svnOut=
set svnDir=C:Your\path\to\svn\dir\to\check
for /F "tokens=*" %%I in ('svn status %svnDir%') do set svnOut=%%I

if "%svnOut%"==""  (
    echo No changes
) else (
    echo Changed files!
)

Почему такая строка

set svnOut=

ты должен сам разобраться. ; -)

3 голосов
/ 05 октября 2008

Пусть ваш .bat выполнит svnversion (если вы используете Subversion) или SvnWCRev.exe (если вы используете TortoiseSVN) для самого верхнего уровня вашей рабочей копии.

Оба вывода, если ваша рабочая копия была изменена.

svnversion добавляет «М» к своему выводу. SvnWCRev.exe напечатает строку текста о том, что туалет был изменен.

3 голосов
/ 03 октября 2008

Хорошо, решение, которое я нашел с помощью Tooony:

set vHEAD = 0
set vBASE = 0

set svnDir=<path to local svn directory>

for /F "tokens=1,2" %%I in ('svn info -r HEAD %svnDir%') do if "%%I"=="Revision:" set vHEAD=%%J
for /F "tokens=1,2" %%I in ('svn info -r BASE %svnDir%') do if "%%I"=="Revision:" set vBASE=%%J

if "%vBASE%"=="%vHEAD%"  (
    echo No changes
) else (
    echo Changed files!
)
1 голос
/ 03 октября 2008

Вы хотите, чтобы это было реактивным? Или по требованию?

О реактиве см. крючки . Сценарий должен быть назван в соответствии с его назначением: pre-commit.bat , post-commit.bat . Сценарии называются: [script] [путь к репозиторию] [номер редакции]

Для, по требованию:

  • Рабочая копия
    • svn log
    • svn st
    • svn diff
    • svn proplist
  • Repository
    • svnlook автора
    • svnlook изменилось
    • svnlook date
    • svnlook diff
    • svnlook history

* * Пример тысяча шестьдесят один:
svn st "C:\path\to\working\directory\" >> C:\path\to\working\project.log

Каждый раз, когда вы запускаете BAT, он добавляет вывод st в project.log . Отрегулируйте при необходимости.

0 голосов
/ 29 ноября 2016

Эта версия основана на @ tooony's, но вместо клиента проверяет наличие обновлений на сервере.

@echo off
set svnOut=

rem Check svn server status of current working directory repository and see if first or second token is an *
for /F "tokens=1" %%I in ('svn status --show-updates') do if "%%I"=="*" set svnOut=%%I
rem echo "%svnOut%"

if "%svnOut%"==""  (
    echo No changes
) else (
    echo Changed files!
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...