你的设置听起来不错。我将基于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,...)。