我们最近将我们的代码库从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 然后进行退出吗?
由于
答案 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