Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial Maven汞释放过程_Mercurial_Branch_Dvcs_Release Management - Fatal编程技术网

Mercurial Maven汞释放过程

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 现在,我可以将此

我们最近换成了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上继续。到目前为止还不错


但是,管理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