我有一个有趣的问题,我希望有人可以帮我解决。我有一个subversion存储库,我用它来存储一个非常大的PHP站点的源代码。以下是有关我的设置的一些重要信息:
该网站的目的是提供许多公司所需的一组核心功能,并让购买我们产品的每家公司都拥有自己的特定品牌网站,提供我们的功能。这是使用Smarty模板引擎(非常好)完成的。每个品牌网站共享相同的核心文件(因此修复核心文件中的错误会为每个站点修复它),并且具有位于/ resources / site中的模板的目录结构。 / resources / site中的每个文件都是必需的,但内容因站点而异。
我希望能够在网站的管理员部分创建一个表单,该表单将创建一个新的品牌网站,作为现有默认网站的/ resources / site目录的克隆(在本地副本中) / var / www),并将其添加到subversion存储库(添加/提交)。这将允许我们在下一次svn更新后立即开始重做模板。
这是我到目前为止所做的:
public function addNewSiteHandle($handleName){
try{
$resourceRoot = "/var/www/site";
echo "Resource Root = ".$resourceRoot."<br />";
$resourceRoot .= "/resources";
echo "Resource Root = ".$resourceRoot."<br />";
$this->recursiveCopy($resourceRoot."/rtx", $resourceRoot."/".$handleName);
$files = array();
foreach(scandir($resourceRoot."/".$handleName) as $file){
if($file != "." && $file != ".." && $file != ".svn"){
echo "Processing \"$file\"<br />";
svn_add($resourceRoot."/".$handleName."/".$file, true, true);
array_push($files, $resourceRoot."/".$handleName."/".$file);
}
}
svn_commit("Handle \"$handleName\" added through the Website.", $files);
}
catch(Exception $e){
error_log($e->getMessage());
}
}
这抱怨错误:
[Wed Aug 15 14:31:01 2012] [错误] [client 192.168.1.x] PHP警告: svn_add():发生svn错误\ n155007(路径不是工作副本 目录)'/ var / www / site / resources / testtt43'不起作用 在第76行的/var/www/site/Subversion.class.php中复制\ n, referer:http://b1.festivadev.com/cloneTest.html
我知道该网站是一个工作副本目录,所以我不确定是什么问题。有什么想法吗?
答案 0 :(得分:1)
您的脚本会复制整个站点目录,包括.svn子目录。 复制后,不应复制这些.svn目录或以递归方式从复制的目录中删除它们。之后SVN添加&amp;提交应该正常工作。