我正在尝试learn Mercurial,但我正在努力弄清楚如何处理具有两个克隆的中央存储库的情况,以及克隆中同时进行的更改。这是我做的:
1.我在文件夹(central
)中创建了一个存储库,然后将其克隆到另外两个文件夹(al
,bob
)。
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
我正在努力弄清楚在这里要做什么......我对文件所做的更改不会相互冲突。
答案 0 :(得分:1)
虽然您认为变化不会相互冲突,但Mercurial并不同意。
要重新发生冲突,您必须打开test.txt
文件并手动解决Mercurial留下冲突标记的地方的冲突(<<<<<<<<<<<<>>> >>>>),保存更正的文件,然后运行hg resolve
合并解决后,您应该使用hg commit
提交更改
答案 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
。