使用PHP管理本地SVN文件结构

时间:2009-02-17 22:27:12

标签: php svn filesystems

我有一个开发人员工具,可以使用php修改本地文件系统。这些项目经常从SVN检出。我想避免的问题是版本控制的指令的移动/删除/重命名 - 以及在本地进行这些更改时签出的SVN发生的破坏。

当我还执行匹配的文件系统操作时,是否有一种简单的方法来应用SVN命令(移动添加,删除,重命名等)?

或者,如果在移动/重命名目标中找到.svn目录会更容易吗?

澄清一下:

签出的svn结构为:

somedir /
--foo /
--cheese /

用户1改变这个文件系统结构(使用开发工具),将'foo'目录(受版本控制)重命名为'modified',当他们去提交他们的更改时,svn会因为更改而出错名字不是通过SVN命令完成的。

这可以在各种开发服务器上运行(通常是在win或mac上运行apache的桌面计算机)

不要忽略或断开svn。

3 个答案:

答案 0 :(得分:1)

以编程方式,您可能最好只删除.svn文件夹。它可能只有一两行代码。

要尝试的另一件事,为什么不导出模块?这样你就不会得到.svn文件夹了。

另请注意,您可以编写所有svn命令的脚本并运行它们。

答案 1 :(得分:1)

在PHP文件中,您可以通过svn

使用exec()命令
<?php
$Output = '';
$ExitCode = 0;
exec('svn mv "'.$Current.'" "'.$New.'"', $Output, $ExitCode);

$Output是命令的输出,如果命令成功,$ExitCode将为0

但请记住,出于安全原因,某些系统上可能会禁用exec()命令。如果您可以控制php.ini文件,则可以选择启用/禁用它。

答案 2 :(得分:0)

如果我理解正确,则在另一个(主)中有一个版本控制目录(从属)。为什么不直接将slave目录添加到master svn ignore list?

svn propset svn:ignore slave .
svn ci . -m 'Added ignore dir'

从现在开始在主目录中运行svn up / add / delete不会搞乱slave svn,而后者仍然完全正常运行。