解决Mercurial中的冲突

时间:2015-01-03 21:22:35

标签: version-control mercurial

我正在尝试learn Mercurial,但我正在努力弄清楚如何处理具有两个克隆的中央存储库的情况,以及克隆中同时进行的更改。这是我做的:

1.我在文件夹(central)中创建了一个存储库,然后将其克隆到另外两个文件夹(albob)。 2.向al添加了一个文件(text.txt),并将其提交 3.更改al中的文件,提交了它 4.将al推送到central 5.将central拉入bob,更新了
6.已更改bob中的文件,已提交,已推送至central 7.将central拉入al,更新了

这是我的问题所在的部分......
8.我更改了al中的文件,已提交AND 9.更改bob中提交的相同文件 10.我将bob推到了central 11.现在,当我将central拉到al时,我收到了消息

  

添加了1个更改集,1个更改为1个文件(+1个头)   (运行'hg heads'看头,'hg merge'合并)

我明白发生了什么:两个脑袋。但是当我然后合并时,我收到消息

merging test.txt
Unsupported file type .txt
merging test.txt failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon

我正在努力弄清楚在这里要做什么......我对文件所做的更改不会相互冲突。

3 个答案:

答案 0 :(得分:1)

虽然您认为变化不会相互冲突,但Mercurial并不同意。

要重新发生冲突,您必须打开test.txt文件并手动解决Mercurial留下冲突标记的地方的冲突(<<<<<<<<<<<<>>> >>>>),保存更正的文件,然后运行hg resolve合并解决后,您应该使用hg commit提交更改

您可以在Resolving conflicts in Mercurial

中找到更多详情

答案 1 :(得分:0)

正如@ dalija-prasnikar所暗示的那样,你发现它并不是一个区别。试试hg diff并查看您是否可以看到任何内容,或将其发布在您的问题中。另一种可能性是文件权限 - 跟踪执行位并且某些文件系统会对您进行调整,如果两个分支不同意,可能会要求您解决它。

答案 2 :(得分:0)

Mercurial尝试使用您已配置的合并工具(请参阅.hgrc),此工具说:Unsupported file type .txt并且可能对文件没有任何作用。因此diff不会显示任何内容(您的文件保持不变,但与其他分支的差异实际存在。也许您可以使用修订号看到diff: hg log -l 5将显示最近5次提交。使用修订版调用hg diff -r $REV_FROM_AL -r $REV_FROM_BOB

要解决你必须

  • 编辑文件text.txt,包括您希望从2个版本中获得的内容(请参阅上面的差异)
  • 标记为已解决hg resolve -m text.txt
  • 提交更改

我使用Noel Burton-Krahn编写的脚本在我首选的编辑器中手动合并。关于冲突错误"简单版本"这个脚本保存3个文件:original / parent,mine,other-version。 见https://www.mercurial-scm.org/wiki/MergingManuallyInEditor

PS:有时在不同的平台上工作(Windows / Linux)我得到了空的差异(在Windows上)我解决了在文件上做hg revert