2009-03-05 58 views
6

我很抱歉,如果這已經問過,但我一直沒能找到具體到這種情況的一個答案:設置SVN到最適合開發 - > QA - > PROD

對於我們的網站應用程序,我們有3個系統:dev,QA和生產。目前,第三方正在維護代碼,但很快它就會在我們手中。我們將爲每個階段分開構建環境。另外,我們使用RAD進行代碼開發,所以實際上會有一個主要步驟,即測試/沙箱。

理想情況下,我們希望以某種方式隔離每個階段的存儲庫,以便我們從DEV簽出,進行一些更改,在本地測試它們,並將它們複製到DEV中。如果Dev上的一切正常,我們將檢查QA,等等。

我們是否應該爲每個存儲庫分別設置存儲庫,或者這會落在'分支'之下,我們將爲dev,QA和prod設立一個單獨的分支。你能不能提供實現理想路線的最佳方式?

讓我知道是否還有其他問題。

感謝 克里斯

回答

6

使用分支與合併

我們下面混淆:

當我們發佈我們創建一個當前版本分支。我們在發佈之間對錯誤進行修復,然後將它們合併回我們的主幹。

我們在主幹上進行開發,當我們準備發佈時,我們開發QA分支。我們測試並修復它,然後將其推出,併成爲我們當前的發佈分支。

1

你應該可以簽出或在部署過程中導出的單個存儲庫。

我們也有類似的設置。開發人員檢查本地工作副本並在其開發環境中進行開發。當我們準備開始階段或稱爲QA時,我們會對該環境執行svn導出(通常是頭部,但我們始終會跟蹤特定的修訂版)。

在質量保證過程中,我們繼續開發並部署到QA。

最後,當我們準備好生產時,我們將正確的版本從存儲庫導出到生產環境中。

很好用!

[編輯:就'這是分支'而言 - 你所描述的可能更像是跟蹤修訂。然而,分支是管理不同開發路線的一項非常重要的技術。這不應該與具有不同分支的每個階段(開發,階段,生活),不一定]

1

如果您正在開發一個具有輕鬆確認任務的開發流,此工作正常。但是,隨着多個開發流程和任務被拖出或延遲的可能性,這將證明更具挑戰性。然後,您需要在應用程序中使用某種時間依賴關係。您還可以使用功能分支等功能構建後合併回主幹的功能。

3

退房斯科特·考恩的博客文章:

http://sleepoverrated.com/archive/2007/12/buildknowledgepromotingyourbuild/

他對促進你的代碼,不同的環境有很大的文章。它將包括編寫一些構建腳本,但會改進過程。它將允許它也是一些自動化的。

+0

我的舊設置的問題是農場環境。我喜歡使用teamcity並觸發腳本來下載工件並安裝 – 2009-03-12 08:20:12

1

我們有類似的模式。在SVN中,我們有3個分支,trunk,PREPRODPROD。每當新功能準備好嘗試時,它將被合併到PREPROD分支(僅使用特定修訂版本號並且僅用於特定文件),如果它通過QA,它將被提交併合併到PROD分支中。在PROD分支中提交更改時,它們將自動部署到所有生產服務器中。除了測試新功能時,PREPRODPROD是相等的。

+0

請問trunk是否反映了PROD? – 2009-03-06 14:01:44

1

我們爲每個錯誤修復,功能或任務都有一個開發分支,涉及的項目往往有多個子分支。

最初它是一種奇怪的創建一個新的分支只是一行代碼修復,但它允許將樹幹合併到分支,然後迴歸測試,最後合併回樹幹。

理想情況下,這意味着任何合併到主幹中的內容都不會破​​壞構建,這意味着您不必擔心提交代碼來構建脆弱構建。

我經常在一個問題上使用多個分支,測試不同的解決方案,同時仍然獲得SCM的好處。

我們還標記特定的版本或版本,允許基於已知的良好代碼進行快速部署。

我們基於Web的系統中的很多都使用svn:指向特定版本的依賴項(如庫和供應商代碼)的外部指針。部署取自外部,而不是直接簽出或導出。

相關問題