我有一個使用Cruise Control.NET進行持續集成的Web應用程序的Kiln/Mercurial代碼存儲庫。通常,我們在本地提交代碼,當我們準備測試時,我們會推送到我們的中央Kiln服務器。 Cruise Control會定期檢查該服務器上的存儲庫是否有新的修訂版,並在找到該修訂版時創建它並將生成的文件複製到相應的Web服務器。如果它測試出來,我們然後手動強制構建到我們的主生產服務器,並且都很好。如何使用Cruise Control和Mercurial進行回滾和構建
不過最近我們發現了一個小呃逆。我們在上個月發佈的版本中發現了一個缺陷,需要修復它。自那時以來,已經有50次左右的提交,並且在這50次提交中引入的代碼遠未準備好投入生產。我們知道我們可以在本地回滾(更新)到推出到生產的版本並修復代碼,但我們沒有辦法將它推送到Kiln並將其發送給Cruise Control - Kiln服務器上的Mercurial抱怨多個頭。解決這個問題的最好方法是什麼?
我們搜索了一下,發現了對分支和標籤的引用。我們最終在Kiln服務器的存儲庫中創建了一個新分支。該分支有我們的主要存儲庫減去那50個提交。然後,我們修正了錯誤並修改了巡航控制配置,以查找那裏而不是主存儲庫。經過一些構建之後,我們將bug修復在生產服務器上。這看起來像是大量的工作來回滾,修復並將其推送到Web服務器。
由於我們是一家小商店,我們通常有我們自己的項目。沒有有意的分支(到現在爲止),甚至是最小的合併,所以雖然我們並不是新的版本控制,但這個概念有一些共同的方面,我們還沒有處理。