PHP、Subversion和克隆,然后提交目录结构
我有一个有趣的问题,我希望有人能帮我解决。我有一个subversion存储库,用于存储大型PHP站点的源代码。以下是有关我的设置的一些重要细节:PHP、Subversion和克隆,然后提交目录结构,php,svn,commit,Php,Svn,Commit,我有一个有趣的问题,我希望有人能帮我解决。我有一个subversion存储库,用于存储大型PHP站点的源代码。以下是有关我的设置的一些重要细节: 站点的开发版本位于服务器上的/var/www/sitename-dev,它是通过从存储库执行svn签出而创建的 该站点的实时版本位于/var/www/sitename,并且也是通过svn checkout创建的 存储库上设置了一个提交后钩子,每次提交后将在开发人员站点上运行svn更新,如果提交日志条目包含特殊的部署关键字,则在活动站点上运行svn更新
- 站点的开发版本位于服务器上的/var/www/sitename-dev,它是通过从存储库执行svn签出而创建的
- 该站点的实时版本位于/var/www/sitename,并且也是通过svn checkout创建的
- 存储库上设置了一个提交后钩子,每次提交后将在开发人员站点上运行svn更新,如果提交日志条目包含特殊的部署关键字,则在活动站点上运行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());
}
}
公共函数addNewSiteHandle($handleName){
试一试{
$resourceRoot=“/var/www/site”;
echo“Resource Root=“.$resourceRoot.”
;
$resourceRoot.=“/resources”;
echo“Resource Root=“.$resourceRoot.”
;
$this->recursiveCopy($resourceRoot./rtx“,$resourceRoot./”$handleName);
$files=array();
foreach(scandir($resourceRoot./“$handleName)作为$file){
如果($file!=“&&&$file!=”。“&&&$file!=“.svn”){
回显“处理\“$file\”
”;
svn_add($resourceRoot./“$handleName./”$file,true,true);
数组\u push($files,$resourceRoot./“$handleName./”$file);
}
}
svn_提交(“Handle\”$handleName\“通过网站添加。”,$files);
}
捕获(例外$e){
错误日志($e->getMessage());
}
}
这会导致以下错误:
[Wed Aug 15 14:31:01 2012][error][client 192.168.1.x]PHP警告:
svn_add():发生svn错误\n155007(路径不是工作副本
目录“/var/www/site/resources/testtt43”不是一个工作目录
复制\n在第76行的/var/www/site/Subversion.class.php中,
推荐人:
我知道该站点是一个工作副本目录,所以我不确定问题出在哪里。有什么想法吗?您的脚本复制了整个站点目录,包括.svn子目录。
您不应该复制这些.svn目录,也不应该在复制后从复制的目录中递归删除它们。之后,SVN add&commit将正常工作。脚本将复制整个站点目录,包括.SVN子目录。
您不应该复制这些.svn目录,也不应该在复制后从复制的目录中递归删除它们。之后,SVN add&commit将正常工作。我相信您是正确的。我使用regex.*\.svn.*在我的复制函数中过滤掉所有与subversion相关的文件,并且我只在svn中添加了/resources/site目录(带有递归标志),这似乎很有帮助。我相信你是对的。我使用regex.*\.svn.*在我的复制函数中过滤掉所有与subversion相关的文件,并且我还只向svn添加了/resources/site目录(带有递归标志),这似乎很有帮助。