Mercurial更新将覆盖我的更改而不是合并

时间:2010-12-09 07:41:53

标签: mercurial

我来自CVS背景。

目前,我有2个并行开发的mercurial存储库。 hello-world-bugfixhello-world-feature(这是从hello-world-bugfix

克隆的

现在,我想将hello-world-bugfix中的错误修复代码合并到hello-world-feature,以便在当天结束时,我将获得合并文件。

[BUG2 BUG2 BUG2]

START
[BUG1 BUG1 BUG1]

[FEATURE2 FEATURE2 FEATURE2]

以下是所有事情之前的样子,拉动和合并。以下两个文件已经提交。

alt text


alt text


现在,我从hello-world-feature执行提取,从hello-world-bugfix提取更改。 alt text

然后,我执行更新,并启用了always merge选项。 alt text

这是我的合并文件???

[BUG2 BUG2 BUG2]

START
[BUG1 BUG1 BUG1]

我的上一次承诺[FEATURE2 FEATURE2 FEATURE2]似乎被覆盖了。

似乎我不应该执行更新步骤,不会将featurebug合并,而是用feature覆盖bug拔出后我应该做的下一个正确步骤是什么? (通过TortoiseHg),以便我可以获取错误修复代码,并在那里保留功能代码?

以下是hello-world-feature的最终存储库视图 alt text

1 个答案:

答案 0 :(得分:7)

“始终合并”选项不会按照您的想法执行。

它只合并未提交的更改。

更新时,已使用新版本替换已提交的文件。

合并已提交的更改,即。合并分支,你需要做一个明确的合并。

因此,我会在日志中选择BUG2 BUG2 BUG2更改集,然后右键单击FEATURE2 FEATURE2 FEATURE2更改集并单击合并,然后按照说明操作。

让我展开“永远合并”复选框的内容。

假设我的存储库中有两个更改集,我更新到第一个,然后我开始修改其中一个文件。

在某些时候我决定从另一个变更集启动会更好,所以我想更新它,保留我的修改。

如果我只使用未提交的更改进行更新,则在尝试更新时会出现此对话框:

Confirm Update

但是,如果我选中“始终合并(如果可能)”复选框,则只会假设我单击该对话框中的“合并”按钮而不提示我。

因此“Always merge”在提交的文件上根本没有任何功能,它不会为您引入合并,它只会尝试将本地更改与更新一起移动。