У меня есть несколько php
-проектов под управлением SVN. Я хочу удалить скомпилированные файлы php-шаблонов после обновления на стороне клиента; эти файлы находятся в папке ./tmp/smarty/compile
. Итак, используя командную строку Windows, я могу сделать это, используя
del /Q path_to_my_project\tmp\smarty\compile
Если я запускаю эту команду в cmd.exe, все файлы успешно удаляются.
используя свойства проектов tsvn:postupdatehook
Я должен использовать заполнитель %REPOROOT%
для пути к проекту. поэтому моя команда становится:
del /Q %REPOROOT%\tmp\smarty\compile
del
— это команда cmd.exe
, поэтому мне нужно сначала запустить cmd.exe
, а затем выполнить нужную команду. так что, наконец, моя команда ловушки выглядит так:
cmd.exe /c del /Q %REPOROOT%\tmp\smarty\compile
когда я запускаю это, используя Win+R
(с измененным на полный путь reporoot
), он тоже работает нормально.
Затем я помещаю эту строку в свойства SVN (я должен заменить косую черту \
на /
, иначе SNV возвращает http
-путь к репозиторию, а не локальный путь) и пытаюсь обновить проект. TortoiseSVN спрашивает меня, хочу ли я запустить хук:
cmd.exe /c del /Q D:\_projects\webCakePHP\.....\tmp\smarty\compile
Итак, здесь reporoot
успешно переводится в правильный путь рабочей копии. Все выглядит нормально, но когда я запускаю этот хук, он успешно удаляет файлы в tmp\smarty\compile
, но также удаляет все файлы из рабочей папки.
вопрос в том, что я делаю не так, и как правильно удалить файлы после обновления.
Я пробовал ставить кавычки разными способами, но он вообще ничего не удаляет или говорит, что такого каталога нет.
Благодарность
del /Q "%REPOROOT%\tmp\smarty\compile"
; в противном случае, в случае появления пробелов или других разделителей токенов,del
неожиданно интерпретирует это как несколько путей... - person aschipfl   schedule 19.12.2016