Mervial相当于svn的合并 - 仅限记录?

时间:2013-05-17 00:26:35

标签: mercurial pull svn-merge

我们最近将我们的代码库从subversion转移到了mercurial,并且正在本周末从mercurial代码库开始生产我们的第一个版本。

我们有三个repo设置,我们称之为 dev stable release ,其中 dev stable stable 的克隆是 release 的克隆。目前, dev 具有我们的版本7代码, stable 具有我们的版本6代码。我们刚刚将第6版代码推送到发布。我们的下一个版本6.1将于下周发布。

问题在于,由于我们还在v6版本中进行了重大升级,因此我们期望在6.1版本发布之前多次发布(6.0.1,6.0.2等)。继续前进这不会有问题,因为所有三个repos都有不同的版本号,但现在稳定发布都是v6。

如果我将 stable 上的poms中的版本号更改为6.1,则必须将此更改撤回到 dev ,这意味着必须先将其修改为 dev 那些人工制品可以建造(以免污染v6.1版本与真正的v7文物)。

有没有办法告诉mercurial将此更改拉入 dev 而不实际接受更改,类似于svn的merge -record-only?唯一的选择是将更改提取到 dev 然后进行退出吗?

由于

1 个答案:

答案 0 :(得分:2)

我不能说我遵循你的版本管理逻辑;不同的版本号与您提取或合并的更改有什么关系?但是,如果我理解正确,您希望修改stable分支中的显式版本号(例如,更改为6.1),然后继续将更改推送到dev,但阻止版本号{{1}从成为6.1。

以下是您的操作方法:确保版本号在其自己的变更集中 - 您不希望它与您 希望应用的更改共享变更集。现在合并这个变更集,告诉mercurial在合并期间通过特殊的“合并工具”始终使用文件的“本地”版本:

dev

正如hg merge --tool internal:local -r REV 所解释的那样:

hg help merge-tools

有关详细信息,请参阅完整帮助。

合并修订版A merge tool combines two different versions of a file into a merged file. ... "internal:local" Uses the local version of files as the merged version. 还会合并REV所依赖的任何更改集。因此,如果需要,您应该首先在REV之前(以正常方式)合并修订版本。这可以通过

自动完成
REV