2014-11-04 172 views
0

上一個歷史:最近幾年我使用SVN。發佈一個軟件項目的新版本中包括以下步驟:Mercurial:分支版本?

  1. 新版本創建一個分支:/repo/branches/0.1
  2. 獲取代碼到釋放值得狀態有
  3. 創建對於候選發佈版標籤:/repo/tags/0.1-RC1
  4. 創造RC1修正錯誤分支:/repo/branches/0.1-RC1
  5. 新發布候選製作標籤:/repo/tags/0.1 -RC2
  6. {...}
  7. 創建從最後一個RC V0.1標籤:合併到0.1主幹

/repo/tags/0.1

  • 至於我看到的Mercurial分支與標籤比SVN略有不同,這終於導致我的問題:

    我是否爲發佈創建分支(和標籤)?如果沒有的話:還有什麼要Mercurial爲我歸檔類似於描述的開發模式/循環的東西?

  • 回答

    1

    你可以很容易地繼續使用這種方法。我不確定你需要一個單獨的RC1分支,但我想有很好的理由。

    在Mercurial中存儲標籤的方式有點煩惱,Mercurial是一個逐一列出它們的版本化文件。結果,標籤創建構成了變更集。你應該努力在一個分支上保留所有這種創建標籤的變更集,否則你將會遇到合併衝突(這很容易解決,但是令人討厭)。

    +0

    感謝您的回答。關於RC1的分支機構:這只是我們在我的第一個項目中完成的方式,作爲初級階段我並沒有質疑它。無論如何,現在擁有自己的項目我一直在做。 你答案的最後部分不完全理解。你能否詳細說明一下? – Hannes 2014-11-04 22:24:53

    +0

    你必須自己體驗:)。 Mercurial將代碼存儲在託管代碼樹(.hgtags)內相當無辜的文件中。由於這個原因,所述文件可能會在分支之間發生分歧,導致合併時幾乎發生某些合併衝突。如果這不妨礙你,那就忽略這個問題。但是,由於標籤保留在哪個分支並不重要 - 標籤「A」可以在分支B0中創建,但是引用分支B1中的一個變更集 - ,在同一分支上創建所有標籤會很好。您甚至可以使用專門用於追蹤標籤信息的分支,這些信息永遠不會合並。 – Ringding 2014-11-05 14:46:37

    1

    您可以使用舊的工作流程,而是:每發佈

    • 科真的同時需要(在任何SCM)只有當你有保持一定量(> 1)版本的生產,gor單維護髮布分支樹不需要
    • 我看到很多(相當複雜)的項目,它使用雙分支方法(「穩定」與合併集和標籤+「發展」爲每一天的發展(短每期任務也是可能的,但它更多的是品味和習慣問題,而不是「必須」)