Поведение пакетного скрипта после выполнения SVN отличается от обычного исполнения
Нужна небольшая помощь с svn post-commit
Пакетный скрипт. Вот что у меня есть:
после commit.bat:
1. @ECHO OFF
2. cd D:\Subversion\...\hooks
3. SET OUTPUT = default
4. FOR /F "tokens=*" %%a in ('revision.bat') do ( SET OUTPUT=%%a )
5. findstr /m "Autobuild" D:\Subversion\...\db\revprops\0\%OUTPUT%
6. if %errorlevel%==0 (
7. call website.bat
8. )
website.bat:
D:\Subversion\...\hooks\wget http://website.com/service-trigger
revision.bat:
svnlook youngest D:\Subversion\...
Итак, здесь происходит то, что
После фиксации в хранилище скрипт извлекает последний
revision
числоИспользует этот номер, чтобы найти файл в журналах ревизий
Попробуйте найти определенную строку в этом журнале
Если конкретная строка существует, запустите какой-то URL
Моя проблема в том, что этот скрипт выполняется при вызове напрямую из cmd, но когда SVN вызывает его, кажется, что в строке № 5 происходит что-то странное, потому что я не получаю никакой ошибки, но строка № 7 никогда не вызывается.
Я подозреваю, что, возможно, я должен запустить скрипт от имени администратора, но так как я никогда серьезно не программировал для Windows, я не уверен, и мне нужна помощь
1 ответ
Пробелы важны в SET
заявления. В строке 3 вы устанавливаете переменную "output "
не "output"
Удалить пробелы вокруг =
в строке 3 и после %%a
в строке 4 (но косметические только здесь.)
Также - не ясно, ...
is (опущено) или (parent-of-parent). Если абсолютное имя файла содержит пробелы, "quote it"
Также может быть, что ваш начальный каталог отличается для каждого вызова. cd
в строке 2 изменяет текущий каталог на D:
диск, но не влияет на диск по умолчанию. Вам нужно выполнить D:
переключить по умолчанию на диск D:
, revision.bat
в строке 4 относительно значения по умолчанию.