首页 > 解决方案 > 如何在远程服务器上使用 php 删除本地工作副本上隐藏的 .svn 文件夹?Unlink() 权限被拒绝

问题描述

我的SVN存储库包含多个项目。每个项目都包含相同的结构,看起来像trunk -> doc -> log.txt. 此log文件包含修订之间所做的更改。目前,我创建了一个php在运行服务器构建时执行的脚本。这将php script签出log.txt服务器本地目录中的文件。C://..../..../doc/log.txt.

它写入此文件,然后提交更改。当有人使用另一个项目运行服务器构建时,就会出现问题。它试图将该项目的文件检出log.txt到同一目录中,我得到一个svn error. 提交更改后,我不再需要本地目录中的签出文件。我能想到的唯一选择是在签出新文件夹之前删除 doc 文件夹(仅在我的本地目录而不是 repo 中),这样以前的文件夹log.txt就不再存在了。

我发现一个recursive algorithm删除所有文件unlink()和目录的rmdir. 该算法运行良好。不幸的是,隐藏.svn文件没有unlink()权限被拒绝错误。fileperms()在所有文件和父目录上使用会返回16895转换为40777in octal,因此我相信它们具有完全权限。但我相信用户的权限没有修改/写入。有没有合适的方法来删除.svn folder我服务器工作副本上的隐藏内容?或者,如果有人能想到更好的方法来做到这一点。因此,如果AprojA/doc/log.txt已经在本地目录中,我将签出BprojB/doc/log.txt. 有没有办法结帐和覆盖现有的log.txt与来自另一个项目的日志文件?--force 参数似乎对我没有多大作用。

我也有一个模糊的想法,也许可以使用 -depth=empty 查看顶级 svn 存储库。然后 svn 只更新每个项目的日志 txt 文件。所以代替checkingout -> committing changes -> deleting. 我可以让所有log.txt文件可用。但问题是它们都有相同的文件夹和文件名(doc/log.txt)。这一切仍然相对较新,所以我会很感激任何形式的反馈。

标签: phpsvn

解决方案


您可以使用通配符删除带有扩展名的日志文件。因此,所有具有相同扩展名的文件都将在所选文件夹下被删除。


推荐阅读