Jay*_*ena 9 import mercurial patch conflict tortoisehg
我已成功导入补丁而没有相互矛盾的更改.但是当我尝试导入具有冲突变化的补丁时,它会抛出一个错误,说"Hunk#1 FAILED at 11 ..".合并更改没有选项.有没有其他方法可以实现这一目标?
必须手动修复失败的帅哥.应该有一个*.rej文件,其中包含来自补丁的被拒绝的hunk.您必须手动应用它.
请参阅:https://www.mercurial-scm.org/wiki/HandlingRejects
最新版本的 TortoiseHg 2.1 具有帮助您解决补丁中被拒绝的块的工具。当您应用补丁并且它有拒绝时,对于每个有拒绝的文件,它会询问您是否要解决被拒绝的块。如果单击“是”,它会显示一个屏幕,其中包含文件内容(已应用成功的块)以及每个被拒绝的块,以便您可以更轻松地手动进行更改并将每个更改标记为已解决。
我有时处理大量拒绝的方法是重新调整补丁的基础。在 TortoiseHg 1.x 中,我可以选择一个节点,右键单击另一个节点,然后实际重新调整补丁基数。在 TortoiseHg 2.x 中,他们还没有将其添加回来,但解决方法还不错。您仍然可以使用命令行上的 rebase 补丁hg rebase。无论哪种情况,您都需要启用mq和rebase扩展(并且您可能已经启用了前者)。这个答案不是教授如何使用mqor的地方rebase(还有很多其他答案和文章可以做到这一点),所以我将假设对它们有一定的熟悉。
在这两种情况下,您都需要将补丁应用于其所基于的修订版(或者干净地应用或接近干净的修订版)。
命令行:
跑步。以及您想要在命令中使用的任何其他开关。hg rebase -s patchRev -d tiprebase
这将打开您的三向合并工具来解决每个文件的冲突。
运行hg qrefresh以确保合并结果已更新到补丁中。
乌龟Hg UI
对于更麻烦的情况,我更喜欢后一种方法,因为默认情况下它会阻止 Mercurial 自动解决冲突。它允许我选择解决文件的顺序以及解决它们的方式,显示每个步骤的进度状态。