2012-08-15 118 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