2010-12-09 118 views
6

我来自CVS背景。Mercurial更新将覆盖我的更改而不是合并

目前,我有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]被覆盖。

看来,我不应该进行更新步骤,其将不会与bug合并feature,但覆盖feature废除bug拉动后我应该做的下一个正确步骤是什么? (通过TortoiseHg),这样我就可以得到错误修复代码,并在那里保留功能代码?

这里是hello-world-feature alt text

回答

7

的最终处置库视图中的“始终合并”选项不会做你认为它。

它只合并未提交的更改。

当您更新时,提交的文件将被替换为新版本。

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

因此,我将选择日志中的BUG2 BUG2 BUG2变更集,然后右键单击FEATURE2 FEATURE2 FEATURE2变更集并单击合并,然后按照说明进行操作。

让我展开“始终合并”复选框的功能。

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

在某些时候,我认为最好从其他变更集开始,所以我想更新它,保留我的修改。

如果我只是做一个更新,与未提交的修改,我得到这个对话框,当我尝试更新:

Confirm Update

不过,如果我检查“始终合并(如果可能)”复选框,它会简单地假定我点击了该对话框中的合并按钮,但不提示我。

因此,“始终合并”在提交的文件上根本没有任何功能,它不会为您引入合并,它只会尝试移动您的本地更改以及更新。