Mercurial Maven汞释放过程
我们最近换成了Mercurial。在观看此有用的视频后: 我正在尝试实施一个发布流程,该流程允许以下内容: -maven发布独立于正在进行的开发工作 -修补发布的版本,然后将修复推回到开发人员 到目前为止,我已经得出了以下结论: 这允许我们在开发repo的同时针对稳定repo进行发布 我的问题是maven发布插件。如果我发布的是1.0.0-SNAPSHOT,那么在稳定的回购协议中,我会得到以下结果: 1.0.0-SNAPSHOT->1.0.0->1.1.0-SNAPSHOT 现在,我可以将此推回到devrepo,开发将在1.1.0-SNAPSHOT上继续。到目前为止还不错Mercurial Maven汞释放过程,mercurial,branch,dvcs,release-management,Mercurial,Branch,Dvcs,Release Management,我们最近换成了Mercurial。在观看此有用的视频后: 我正在尝试实施一个发布流程,该流程允许以下内容: -maven发布独立于正在进行的开发工作 -修补发布的版本,然后将修复推回到开发人员 到目前为止,我已经得出了以下结论: 这允许我们在开发repo的同时针对稳定repo进行发布 我的问题是maven发布插件。如果我发布的是1.0.0-SNAPSHOT,那么在稳定的回购协议中,我会得到以下结果: 1.0.0-SNAPSHOT->1.0.0->1.1.0-SNAPSHOT 现在,我可以将此
但是,管理1.0.0版本和后续补丁的最佳方法是什么?我应该从1.0.0提交点或其他克隆创建分支吗?是否有其他方法来管理它,以便执行1.0.1修复程序的开发人员可以轻松地应用它,并将修复程序推还给开发人员?从一个角度来看,最好是在一个专用的分支(您可以从一个repo推到另一个repo)或repo(如果您想避免“命名分支”),您的设置听起来不错。我将基于1.0.0版本的变更集创建一个新的。保留您的分支,并为每个版本创建分支 在这里,我将版本号写在变更集上方和下方的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
因此,您可以使用default
分支在版本1.0.0-SNAPSHOT上愉快地工作。当到发布时间时,插件会使用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"
服务器上的一个或两个存储库之间的选择现在基本上是不相关的。您可以使用命名的分支来区分稳定的变更集(它们位于1.0.x
)和不太稳定的变更集(它们位于default
)。然而,在服务器上为每个稳定版本保留一个存储库通常是有意义的。您可以在Jenkins中设置作业,也可以使用cronjobs执行以下操作
$ cd foo-1.0.x
$ hg pull --branch 1.0.x
以固定的时间间隔进行克隆,以便使克隆保持最新。您还可以在主dev repo中创建一些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等)
$ cd foo-1.0.x
$ hg pull --branch 1.0.x
[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