2012-02-02 63 views
4

我們最近已切換到Mercurial。看這個有用的視頻後: http://www.youtube.com/watch?v=-k2vLKOUb8s&noredirect=1Maven Mercurial發佈流程

我想實現一個釋放的過程,允許以下內容: - 行家釋放是獨立的持續開發工作 - 補丁發佈的版本,然後按修復回dev的

到目前爲止,我想出了這一點: Repo Arch

這讓我們這樣做對穩定回購釋放,同時繼續開發dev的回購。

我遇到的問題是使用maven release插件。如果我釋放1.0.0-SNAPSHOT,我會在穩定的回購中得到以下結果: 1.0.0-SNAPSHOT-> 1.0.0-> 1.1.0-SNAPSHOT

現在我可以推回到開發者回購和開發將在1.1.0-SNAPSHOT上繼續。到現在爲止還挺好。

但是,管理1.0.0版本和後續補丁的最佳方法是什麼?我應該從1.0.0提交點還是另一個克隆創建一個分支?有沒有其他的方式來管理它,因此開發一個1.0.1修補程序的開發人員可以輕鬆應用它,並將修復推回到開發中?

回答

3

你的設置聽起來不錯。我將基於1.0.0版本的變更集製作新的long-term named branch。保持您的development on the default branch併爲每個版本創建分支。

在這裏,我寫在上面和下面的變更POM中的版本號,分支名一路左:

  1.0.0-SNAPSHOT 1.0.0 1.1.0-SNAPSHOT 
default: o --- o --- o --- o ------ o --- o --- o --- o --- o --- o 
          \       /
1.0.x:      o --- o --- o --- o -------- o --- o --- o 
           1.0.1-SNAPSHOT 1.0.1  1.0.2-SNAPSHOT 

所以,你願意就版本1.0.0-SNAPSHOT使用default工作科。當發佈時,該插件使用1.0.0創建變更集,並立即使用1.1.0-SNAPSHOT創建另一個變更集,全部在default分支上。

現在或以後可以爲1.0.x版本分支 - 無所謂。當你做你的分支

$ hg update 1.0.0 # <- this is a tag 
$ hg branch 1.0.x 
# edit the POM to change version to 1.0.1-SNAPSHOT 
$ hg commit -m "Started 1.0.x branch" 

開發人員現在可以隨時使用

$ hg update 1.0.x # <- this is a branch 

去該分支上的最新變更,並hg update default要回發展的主線。當更改集在1.0.x分公司承諾,你要他們合併回default,這樣的錯誤也將被固定在那裏:

$ hg update default 
$ hg merge 1.0.x 
$ hg commit -m "Merge in bugfix-123 from 1.0.x" 

您的服務器上的一個或兩個倉庫之間的選擇主要是無關現在。您使用命名的分支來區分穩定的變更集(它們在1.0.x上)和不太穩定的變更集(它們在default上)。但是,爲每個穩定版本保留服務器上的存儲庫通常是很有意義的。您可以在Jenkins中設置作業或使用cronjob執行

$ cd foo-1.0.x 
$ hg pull --branch 1.0.x 

定期更新,以便克隆保持最新狀態。你也可以在你的主要開發一些回購掛鉤changegroup像這樣:

[hooks] 
changegroup.1.0.x = hg push --branch 1.0.x ../foo-1.0.x 
changegroup.1.1.x = hg push --branch 1.1.x ../foo-1.1.x 

開發商將不得不等待,直到鉤完成,但它應該是快速的,當你只是本地存儲庫之間推。如果這是一個問題,請使用異步同步機制(Jenkins,cronjob,...)。