2012-09-25 74 views
1

我即將建立一個SVN服務器,我需要推出代碼到幾個不同風格的遠程服務器(Windows 2008和Linux(Apache和Tomcat)) 。SVN架構 - 同步/導出文件到遠程服務器

什麼是推出代碼的最佳方法?服務器之間的Rsynch? SFTP?從遠程服務器調用SVN導出?我正在考慮每個存儲庫上的提交後操作/事件以啓動此操作。多平臺解決方案將是關鍵。

編輯#1 剛剛獲悉,SVN出口不會同步,會留下已刪除文件的完整在遠程服務器上...

編輯#2

  • 我要考慮到許多存儲庫將被推送(或拉到)這些服務器。
  • 這些參與PHP或ASP.Net項目(網站/應用)

解決方案

  • 在其他服務器上安裝了哈德森
  • 結賬源代碼,我們的網絡服務器
  • 上的特定位置
  • 爲某個特定項目創建一個工作,該工程將目錄更改爲工作副本並調用svn up
  • post-commit鉤子,做對工作的URL的wget - 哈德森/工作/ name_of_job /建造延遲= 0秒

回答

0

在每個遠程系統上調用svn update的post-commit掛接,在每個系統上都有一個工作副本,是一條可以使用的路徑(並且通用性足以成爲FAQ entry)。

您也可能想要查看持續集成服務器,特別是如果您需要推出的項目是必須編譯和部署的應用程序(可能與Tomcat的情況相同)。在這種情況下,不是從Subversion服務器推送,您的CI服務器將輪詢檢查更改並提取更新,然後運行您的編譯/測試/部署腳本並報告結果。

+0

我是否需要在所有機器上安裝CI服務器?還是它從一個地方運行?無論如何CI服務器都不會調用單個存儲庫的更新?它與調用svn更新並調用該頁面的php,.net和.jsp頁面有什麼不同? CI會給我們什麼其他功能?發生的操作日誌? – TekiusFanatikus

+0

這取決於您選擇的CI系統的工作方式,但您可能需要將其安裝在所有機器上(或設置網絡共享來移動)。例如,CI的功能取決於您的代碼需要如何部署 - J2EE應用程序,它將編譯,運行單元測試並部署到Tomcat中(例如,您可以/應該預編譯您的ASP.NET應用程序)。如果你所有的代碼都是從一個基本的工作副本運行的,那麼你所需要的*就是一個簡單的svn(理論上)。在您的服務器上有一個可以調用系統命令並修改運行代碼的網頁聽起來對我來說是一個重大的安全風險。 – alroc

+0

我無法從PHP調用svn(訪問被拒絕和後期調查,與您就其不安全性達成一致),所以我將不得不安裝CI服務器並嘗試從這個角度進行嘗試。所以,理論是我的帖子提交從Hudson調用一個URL,然後依次執行svn?股票不是我們的選擇。謝謝! – TekiusFanatikus

-1

svnsync

它工作得很好,只需要小心地將它放在post-commit和post-revprop-change鉤子中,因爲它會在大多數提交中調用兩次。除了svnsync用戶外,您還需要讓遠程服務器只讀。

您也可以使這些repos爲只讀,但自動將作者推回到主repo,因此遠程可用作緩存。 Svnsync也非常適合進行連續備份。

紅皮書的repository replication部分顯示您需要知道的全部內容。

+0

是否有問題,我有.svn文件夾?遠程服務器是將提供代碼的Web服務器。此外,我只是想獲取存儲庫的提示,而不一定需要所有的歷史記錄等等。 – TekiusFanatikus

+0

svnsync用於創建存儲庫的鏡像,而不是將版本化的工件分發到其他位置。 – alroc

+0

慚愧,你應該說你只想在原始問題中修改頭部。 – gbjbaanb

相關問題