我来自CVS背景。
目前,我有2个并行开发的mercurial存储库。 hello-world-bugfix
和hello-world-feature
(这是从hello-world-bugfix
现在,我想将hello-world-bugfix
中的错误修复代码合并到hello-world-feature
,以便在当天结束时,我将获得合并文件。
[BUG2 BUG2 BUG2]
START
[BUG1 BUG1 BUG1]
[FEATURE2 FEATURE2 FEATURE2]
以下是所有事情之前的样子,拉动和合并。以下两个文件已经提交。
现在,我从hello-world-feature
执行提取,从hello-world-bugfix
提取更改。
然后,我执行更新,并启用了always merge
选项。
这是我的合并文件???
[BUG2 BUG2 BUG2]
START
[BUG1 BUG1 BUG1]
我的上一次承诺[FEATURE2 FEATURE2 FEATURE2]
似乎被覆盖了。
似乎我不应该执行更新步骤,不会将feature
与bug
合并,而是用feature
覆盖bug
。 拔出后我应该做的下一个正确步骤是什么? (通过TortoiseHg),以便我可以获取错误修复代码,并在那里保留功能代码?
以下是hello-world-feature
的最终存储库视图
答案 0 :(得分:7)
“始终合并”选项不会按照您的想法执行。
它只合并未提交的更改。
更新时,已使用新版本替换已提交的文件。
合并已提交的更改,即。合并分支,你需要做一个明确的合并。
因此,我会在日志中选择BUG2 BUG2 BUG2
更改集,然后右键单击FEATURE2 FEATURE2 FEATURE2
更改集并单击合并,然后按照说明操作。
让我展开“永远合并”复选框的内容。
假设我的存储库中有两个更改集,我更新到第一个,然后我开始修改其中一个文件。
在某些时候我决定从另一个变更集启动会更好,所以我想更新它,保留我的修改。
如果我只使用未提交的更改进行更新,则在尝试更新时会出现此对话框:
但是,如果我选中“始终合并(如果可能)”复选框,则只会假设我单击该对话框中的“合并”按钮而不提示我。
因此“Always merge”在提交的文件上根本没有任何功能,它不会为您引入合并,它只会尝试将本地更改与更新一起移动。