是否与Mercurial的常规做法不断融合?这个工作流程出了什么问题?

时间:2010-07-29 20:55:08

标签: mercurial merge

我的公司正在转向Mercurial,我们来自Subversion。

我们注意到我们必须在工作流程中进行大量合并。例如,如果我更改文件,提交,拉取,更新,推送,然后我的同事更改文件,提交,拉取和更新,他会收到“交叉分支”错误并且必须执行hg合并。我们每次想要推送到我们的中央存储库时,我们都必须这样做。

我们的工作流程有问题吗?似乎错误的是,在我们的历史记录中,对于给定文件,将会有大量的历史条目说“与[changeset id]合并”“与[changset id]合并。”

这就是这样吗?或者我们做错了什么?

3 个答案:

答案 0 :(得分:4)

这没什么不对。绝大多数合并应该是自动的。 确实创建了两个头,当您同时进行相同修订并进入不同方向的更改时 - 您的更改可能会或可能不会发生冲突。

如果要消除“合并”变更集(实际上不是问题),可以更改/ pull / rebase / commit / push而不是更改/ commit / pull / merge / commit。换句话说,在提交更改之前,请将它们重新绑定到新提示。

答案 1 :(得分:1)

如果正在执行合并而没有手动合并解决方案,那么我会说mercurial并且您的工作流程的行为符合设计。

答案 2 :(得分:1)

这很常见,因为您确实需要让您的回购处于一致状态。加速它的一件事是代替

hg pull; hg update

使用fetch

hg fetch

这将智能地执行拉动,而不是更新或合并。它附带mercurial所以它基本上是编辑你的.hgrc添加一行这样的事情:

[extensions]
hgext.fetch=

如果合并得很干净,你甚至不会注意到它发生了。这对我的工作流程有很大的帮助。