1

我们最近将我们的代码库从 subversion 转移到了 mercurial,并在本周末将我们的第一个版本从 mercurial 代码库发布到生产环境。

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

问题是,由于我们也在 v6 版本中进行了重大升级,我们预计在 6.1 版本之前发布多次(6.0.1、6.0.2 等)。展望未来,这将不是问题,因为所有三个存储库都有不同的版本号,但现在稳定版和发布版都是 v6。

如果我将稳定版 pom 中的版本号更改为 6.1,则必须将此更改拉回dev,这意味着在构建任何这些人工制品之前将其修复(以免污染 v6.1 版本)什么是真正的 v7 人工制品)。

有没有办法告诉 mercurial 在不实际接受更改的情况下将此更改拉入dev中,类似于 svn 的 merge --record-only 所做的?将更改拉到dev然后退出的唯一选择是什么?

谢谢

4

1 回答 1

2

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

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

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因此,如有必要,您应该首先合并之前的修订(以正常方式)。这可以自动化

hg merge -r 'parents(REV)'
于 2013-05-17T19:32:20.663 回答