不同文件的Mercurial合并

时间:2016-02-14 22:41:55

标签: mercurial tortoisehg kiln

我们正在使用mercurial / tortoisehg与窑上托管的中央存储库。

我们已经将我们正在做的事情缩小到最简单的可能情况。该场景始于Bob和Joe克隆了窑库,因此它们都以相同的集合开始。

  1. Bob更改文件a.txt,提交并将其推送到窑。
  2. Joe更改文件b.txt并提交。
  3. 乔试图推向窑,但得到这些错误: remote在分支'default'上的头部是本地未知的:503dc02bd36c abort:push创建新的远程头dba053a5be68!
  4. 这显然是由于Bob的变化需要先从窑中取出。所以,乔从窑中取出变化并成功
  5. 乔试图推向窑,但得到这些错误: abort:push创建新的远程头dba053a5be68!
  6. Joe将他的提交与本地合并,然后成功
  7. 乔现在试图推向窑并成功
  8. 在这种情况下,似乎Mercurial应该检测到两个用户都更新了不同的文件而不强制合并,这实际上是Joe拉鲍勃的变化,不得不重新推送并推动两个用户的更改。

    谢谢大家。澄清我的问题:我们很好奇我们是否遗漏了某些东西,或者这是它的运作方式。在这种情况下,即使在合并期间没有冲突,hg仍然迫使我必须拉动,合并,重新发送并重新推送我已经提交的同事的更改并推送到中央存储库。

1 个答案:

答案 0 :(得分:1)

Mercurial的工作方式。

如果Joe没有更改,则不需要合并或合并提交,他只能使用hg update tiphg pull。但是,由于Joe在发出pull请求时发生了更改,即使它们不在同一个文件中,也需要合并。

此信息可在Mercurial指南中找到:https://www.mercurial-scm.org/guide

  

如果您没有对项目进行任何更改,那么当您使用feature1时,您可以更新到提示(hg更新提示),但您更有可能已经做了一些变化之间的其他变化。在这种情况下,是合并的时候了。

     

将feature1合并到项目代码中

     

$ hg merge

     

如果存在冲突,请使用hg resolve - 这也是合并告诉您在发生冲突时要做的事情。合并后,您必须明确提交以使您的合并最终

     

$ hg commit