我有几个php
-在SVN控制下的项目。我想在客户端更新后删除已编译的php-template文件;这些文件位于./tmp/smarty/compile
文件夹中。所以使用Windows命令行我可以这样做使用项目属性中的TortoiseSVN客户端挂钩(删除缓存文件)
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属性(我应更换\
斜杠/
,overwise SNV返回http
-path到存储库,而不是本地路径),并尝试更新项目。 TortoiseSVN的问我,如果我想运行钩:
cmd.exe /c del /Q D:\_projects\webCakePHP\.....\tmp\smarty\compile
所以这里reporoot
被成功转化为正确的工作副本路径。 一切看起来都很好,但是当我运行这个钩子时,它成功删除了tmp\smarty\compile
中的文件,但是它也删除了工作副本目录中的所有文件。
问题是,我做错了什么,以及如何删除文件后更新正确的方式。
我试过把引号放在一些方法上,但它根本不会删除enything或者说没有这样的目录。
pushd %~dp0..\tmp\smarty\compile
del /Q *
popd
和我的钩CMD字符串是%REPOROOT%/bin/clearCache.bat
:
感谢
也许它有助于在路径中加上引号:'del/Q“%REPOROOT%\ tmp \ smarty \ compile”';否则,如果出现空格或其他标记分隔符,'del'会将其解释为意外的多个路径... – aschipfl
@aschipfl路径中没有空格,但用这样的引号,它什么都不做,就像我记得的那样。我试图引用路径和整个德尔命令和双引号删除路径:( – teran
引用路径从来没有伤害,它只是避免了空白的麻烦,并避免需要转义特殊字符... – aschipfl