在我的辦公室,我們正在從Visual Source Safe(6.0!)過渡到Mercurial,並且我正在設法處理我們處境的最佳「Mercurial」方式。目前,在任何給定的項目存儲庫中,我們都維護了它的多個版本:即對於項目A,我們有ProjA-Dev,ProjA-Rel1和ProjA-Rel2的VSS回購(一個dev回購和過去兩年版本)。現在看來,幾乎所有新工作都在dev回購中進行,那麼被認爲需要回滾到Rel1或Rel2的更改是手動完成的(文件從VSS簽出到他們的自己的工作目錄,然後使用一些diff工具只複製適當的更改)。在某些時候,它被認爲會發佈一個新版本,所以dev repo被克隆,並且它變成了Proj * -Rev1,並且之前的Proj * -Rev1變成了Proj * -Rev2,並且Proj * -Dev只是繼續彷彿什麼也沒有發生。在我看來,必須有更好的方式來完成這個更現代的工具,如Mercurial。維護開發/發佈分支的Mercurial最佳實踐?
我目前的想法是,每個項目應該有自己的存儲庫,Dev/Rel1/Rel2的區別最好由不同的命名分支來處理。然而,我無法弄清楚/看到/包裹我的頭是如何在這樣的環境下完成我們當前的工作流程。如果我們遵循我們當前的工作流程,那麼開發分支中的工作仍會繼續下去,並且某些更改(並非全部!)會回滾到Rel分支。我知道這可以通過Mercurial的移植/移植功能來完成,但它似乎還沒有在TortoiseHg中得到很好的支持。而且,更重要的是,過去的回答似乎表明,最好的解決辦法是不讓事情進入這種狀態,以1開頭。
問題是,鑑於當前工作流程,避免這種狀態的最佳方法是什麼?我已經閱讀了許多有關Mercurial和分支的指南(包括許多在這裏找到的答案),但沒有看到這個問題的明確答案。
處理這個問題的一個概念是促銷組,其中dev/test/rel週期可以被認爲是與正常'特徵集'分支類型正交的質量維(相同代碼'葉') 。我對Mercurial不熟悉,所以不能直接幫忙。例如http://www.ericsink.com/scm/scm_branches.html – StuartLC
爲什麼DEV中的東西不會被髮布?我並不是想成爲一個愚蠢的人,只是理解這個推理。如果因爲某個功能未完成,那麼也許應該在其自己的「分支」(不一定是「命名分支」)上完成該工作。我認爲關鍵在於功能分支在DVCS中往往很自然地發生,所以除非有人故意將未完成的工作推給DEV,否則DEV中不應該有太多不移動到RELEASE的東西。 –