2009-10-11 69 views
0

我基本上對如何將最新文件導出到我的web服務器感到困惑。 我與其他3名開發人員一起工作,所以顛覆​​是必須的。我們喜歡Subversion允許多個用戶編輯同一個文件的想法。顛覆集成web服務器的web開發

Pushing from subversion to web server

這傢伙說,使用SVN出口,但不會是messup如果多人在同一時間提交。我可以用提交鉤子腳本來做些什麼嗎?

+0

你是什麼東西「搞亂向上」,因爲多個人犯一次是什麼意思? – ctford 2009-10-11 15:45:55

回答

0

如果您只想將個人更改導出到您自己的服務器,那麼您應該在單獨的分支上開發其他開發人員。將分支導出到本地服務器,然後在準備好分享更改時合併分支。

但是,如果可行的話,我會鼓勵你們在同一分支上工作,因爲你拖延時間越長,合併的痛苦就越多。

這是否回答你的問題?

1

SVN導出會抓取當前版本的存儲庫(或者,如果您指定了特定版本)並將其放到本地文件系統上,使其實際上不受版本控制。這意味着,如果您執行導出操作,則不能隨後從該導出目錄執行簽入操作(因爲它缺少與中央SVN回購站交談所需的.svn文件夾)。

您可以創建一個post-commit掛鉤來爲您自動執行此過程 - 這樣Web服務器始終擁有最新版本的存儲庫。人們「同時提交」並不重要,因爲SVN將其視爲原子操作。最終,您將最終獲得Web服務器上的最新版本。

這可能會有問題 - 如果有人引入了一個問題,或一個錯誤,或者沒有做出最新的自己並因此搞砸了某些東西,那麼這會自動推送到您的網絡服務器。由於顯而易見的原因,這種類型的東西可以避免生產Web服務器 - 但真正歸結爲您自己的需求。

根據您的開發環境和web服務器環境,您可能也會看到類似Capistrano的東西。如果你在Windows下工作,它可能會成爲一個負擔,而如果你的網絡服務器也是Windows,這幾乎是不可能的。但是,如果/當你確實得到它的設置,它會很棒 - 它將處理所有的「通過ssh連接,cd到正確的目錄,導出」以及任何你想爲部署自動化的任務。

+0

你說這可能會導致問題,如果你沒有做到最新自己 但我想顛覆會告訴你,你的文件已過時如果有人已經提交了相同的文件之前你 – Ageis 2009-10-11 16:32:26

+0

SVN會抱怨,如果你嘗試檢入中央服務器上具有較新版本的文件。如果您正在檢入中央服務器上未更改的文件,它將*不*投訴。但是,這不*意味着沒有重大變化。您可以想象,對於某個網站,某人更改了您所依賴的JavaScript或CSS文件,以便您的更新能夠正常工作。或者對於諸如ASP.NET,Ruby on Rails等Web應用程序,如果您依賴另一個過期的文件中的某些內容,則它們還具有其他依賴關係,可能導致網站完全失敗。 – Matt 2009-10-11 16:45:44

0

我會使用CruiseControl來建立你的項目。你可以有你的SVN主幹和一個生產分支。當有人檢入後備箱時,可以自動建立一個dev.domain.com站點,然後當你簽入生產分支時,讓它自動建立該站點。如果您在生產中遇到問題,它還可以讓您輕鬆回滾。

http://cruisecontrol.sourceforge.net/