你的設置聽起來不錯。我將基於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,...)。