Перехватчики TortoiseSVN на стороне клиента в свойствах проекта (удалить файлы кеша)

У меня есть несколько 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, но также удаляет все файлы из рабочей папки.

вопрос в том, что я делаю не так, и как правильно удалить файлы после обновления.

Я пробовал ставить кавычки разными способами, но он вообще ничего не удаляет или говорит, что такого каталога нет.

Благодарность


person teran    schedule 14.12.2016    source источник
comment
Возможно, это поможет заключать путь в кавычки: del /Q "%REPOROOT%\tmp\smarty\compile"; в противном случае, в случае появления пробелов или других разделителей токенов, del неожиданно интерпретирует это как несколько путей...   -  person aschipfl    schedule 19.12.2016
comment
@aschipfl в пути нет пробелов, но с такими кавычками он ничего не делает, насколько я помню. Я попытался указать путь и всю команду del и двойную кавычку del-path с экранированием :(   -  person teran    schedule 19.12.2016
comment
Цитирование путей никогда не вредит, оно просто позволяет избежать проблем с пробелами и избавляет от необходимости экранировать специальные символы...   -  person aschipfl    schedule 20.12.2016


Ответы (1)


в качестве альтернативного решения моего вопроса я создал файл .bat в папке %REPOROOT%/bin, который удаляет файлы:

pushd %~dp0..\tmp\smarty\compile
del /Q *
popd

и моя строка cmd крюка %REPOROOT%/bin/clearCache.bat.

это не точный ответ на мой вопрос, потому что он требует создания bat файла и не является однострочным хуком.

person teran    schedule 15.12.2016