2012-08-15 34 views
1

我有一个有趣的问题,我希望有人能够帮助我解决。我有一个subversion版本库,我用它来存储一个非常大的PHP站点的源代码。以下是有关我的设置是重要的一些细节:PHP,Subversion和克隆,然后提交一个目录结构

  • 开发人员版OT了现场家住位于/ var /网络/网站名称-dev的服务器上,并通过从资源库做一个svn签创建。
  • 该网站的现场版本位于/ var/www/sitename,并且也是使用svn checkout创建的。
  • 存储库上有一个post-commit挂钩,每次提交后将在dev站点上运行svn更新,如果提交日志条目包含特殊的部署关键字,则会在活动站点上执行svn更新。
  • 上述所有功能都非常出色,大大提高了团队的生产力。

该网站的目的是为了提供一组核心功能,许多企业需要,并让每个谁购买我们的产品有自己专门的品牌网站,为我们的功能的公司。这是使用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] [error] [client 192.168.1.x] PHP Warning: svn_add(): svn error(s) occured\n155007 (Path is not a working copy directory) '/var/www/site/resources/testtt43' is not a working copy\n in /var/www/site/Subversion.class.php on line 76, referer: http://b1.festivadev.com/cloneTest.html

我知道该网站是一个工作拷贝,所以我不知道是什么问题是。有任何想法吗?

回答

1

您的脚本会复制整个站点目录,包括.svn子目录。 复制后,您不应复制这些.svn目录或从复制的目录递归删除它们。之后,SVN添加&提交应该正常工作。

+0

我相信你是对的。我使用了正则表达式* \。svn。*来过滤掉我的复制函数中所有与Subversion相关的文件,并且我也只将/ resources/site目录添加到了SVN(带有递归标志),这似乎很有帮助。 – 2012-08-15 20:03:48