11

我对 Mercurial 和 Python 感到沮丧,因为它让简单的事情变得困难。我有一个微不足道的冲突,由于 Mercurial 没有给出任何建议,我什至不知道如何解决这个微不足道的文件冲突:

KDiff3

冲突是微不足道的,但如果我无法解决这个问题,我也无法解决任何复杂的问题。我可以将文件编辑为我想要的方式并从任何地方再次提交吗?我应该跑hg merge吗?为什么 Mercurial 甚至不能让我选择要保留的版本?为什么不深入研究 1000 个写得很糟糕的联机帮助页就几乎不可能完成一些微不足道的事情?

4

2 回答 2

24

您需要查看KDiff3 文档,特别是关于合并和输出窗口的部分。要解决冲突,您需要确定线路的选择live是否january正确。这个决定是你做出的,没有工具可以知道你的意思是一个还是另一个。

在 KDiff3 中,您按Ctrl+2选择live,按Ctrl+3选择january或右键单击底部窗口的边缘并选择您想要的行。您也可以单击底部窗口并手动编辑该行。

Mercurial 让您以任何您喜欢的方式配置您的合并工具。TortoiseHg 附带一个默认配置,将 KDiff3 放在列表顶部,但如果您愿意,可以使用其他工具。合并工具实际上只是一个接受四个文件名的程序:要比较的三个文件(基文件、父文件 1、父文件 2)和输出文件名。

要解决命令行上的冲突,您需要启动合适的命令行三向合并工具。例如,如果您愿意,可以与 vim 合并。(恐怕我对vimdiff一无所知,我自己使用KDiff3。)

如果您不喜欢看到合并工具弹出,那么您可以设置

[ui]
merge = internal:merge

使 Mercurial 仅使用内部三向合并。当编辑没有冲突时,它将很好地合并文件。当存在冲突时,文件被标记为“未解决”并且冲突标记被存储在文件中。

然后,您需要手动编辑文件以获得所需的版本。您还可以重新合并并选择本地(您的)版本:

$ hg resolve --tool internal:local your-file

或其他版本:

$ hg resolve --tool internal:other your-file

您使用 完全重新启动合并hg resolve your-file。在提交之前,该文件需要标记为“已解决”。这是用hg resolve --mark your-file. 查看hg resolve --list当前合并的状态。

于 2012-01-25T13:53:37.400 回答
22

Base 是您本地系统中的先前版本,Parent 1 是您当前的更改,parent 2 是来自服务器的文件。

如果您需要签入更改,请在合并菜单中的任意位置选择 B。如果您想要本地计算机中的最新服务器版本,请在合并菜单中的任何位置选择 C

于 2012-05-30T08:44:53.013 回答