2013-02-11 50 views
0

我有一個使用Cruise Control.NET進行持續集成的Web應用程序的Kiln/Mercurial代碼存儲庫。通常,我們在本地提交代碼,當我們準備測試時,我們會推送到我們的中央Kiln服務器。 Cruise Control會定期檢查該服務器上的存儲庫是否有新的修訂版,並在找到該修訂版時創建它並將生成的文件複製到相應的Web服務器。如果它測試出來,我們然後手動強制構建到我們的主生產服務器,並且都很好。如何使用Cruise Control和Mercurial進行回滾和構建

不過最近我們發現了一個小呃逆。我們在上個月發佈的版本中發現了一個缺陷,需要修復它。自那時以來,已經有50次左右的提交,並且在這50次提交中引入的代碼遠未準備好投入生產。我們知道我們可以在本地回滾(更新)到推出到生產的版本並修復代碼,但我們沒有辦法將它推送到Kiln並將其發送給Cruise Control - Kiln服務器上的Mercurial抱怨多個頭。解決這個問題的最好方法是什麼?

我們搜索了一下,發現了對分支和標籤的引用。我們最終在Kiln服務器的存儲庫中創建了一個新分支。該分支有我們的主要存儲庫減去那50個提交。然後,我們修正了錯誤並修改了巡航控制配置,以查找那裏而不是主存儲庫。經過一些構建之後,我們將bug修復在生產服務器上。這看起來像是大量的工作來回滾,修復並將其推送到Web服務器。

由於我們是一家小商店,我們通常有我們自己的項目。沒有有意的分支(到現在爲止),甚至是最小的合併,所以雖然我們並不是新的版本控制,但這個概念有一些共同的方面,我們還沒有處理。

回答

0

你說你的代碼有問題,然後你做了50次提交。所以你創建了一個包含當前代碼的分支 - 50次提交。

所以我的建議是,它不應該是你的分支,但它應該只是中繼。分支機構代碼應包含僅用於重大更改的代碼,即,您在該代碼中工作了很長時間,同時可能有機會在主幹中執行一些代碼,並可將其移至生產中。

因此,在創建CI時,我的建議是爲Trunk和分支分別設置CI,因此您可以執行測試。

也應該只從主幹發生生產。