我的公司正在转向Mercurial,我们来自Subversion。
我们注意到我们必须在工作流程中进行大量合并。例如,如果我更改文件,提交,拉取,更新,推送,然后我的同事更改文件,提交,拉取和更新,他会收到“交叉分支”错误并且必须执行hg合并。我们每次想要推送到我们的中央存储库时,我们都必须这样做。
我们的工作流程有问题吗?似乎错误的是,在我们的历史记录中,对于给定文件,将会有大量的历史条目说“与[changeset id]合并”“与[changset id]合并。”
这就是这样吗?或者我们做错了什么?
答案 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=
如果合并得很干净,你甚至不会注意到它发生了。这对我的工作流程有很大的帮助。