2016-12-14 98 views
0

我有几个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 

delcmd.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

感谢

+0

也许它有助于在路径中加上引号:'del/Q“%REPOROOT%\ tmp \ smarty \ compile”';否则,如果出现空格或其他标记分隔符,'del'会将其解释为意外的多个路径... – aschipfl

+0

@aschipfl路径中没有空格,但用这样的引号,它什么都不做,就像我记得的那样。我试图引用路径和整个德尔命令和双引号删除路径:( – teran

+0

引用路径从来没有伤害,它只是避免了空白的麻烦,并避免需要转义特殊字符... – aschipfl

回答

0

作为替代解决我的问题,我在%REPOROOT%/bin文件夹,删除文件创建.bat文件。

这不是对我的问题的确切答案,因为它需要bat-文件创建并且不是单行钩子。