在mercurial中处理图像(bmp,png,jpg等)文件合并冲突

时间:2009-07-21 12:15:20

标签: image mercurial merge bitmap

至少,我想要的是“hg merge”在MS Paint(ugh)的并排实例中打开冲突的版本,所以我可以手动进行合并。除MS Paint之外的工具建议的加分点。目前我在看Araxis Merge

4 个答案:

答案 0 :(得分:2)

请参阅Mercurial wiki中的merge tool configuration page。您可以根据文件扩展名使Mercurial启动特定的合并工具。

Araxis工具看起来很酷,但我没有使用它的经验(我使用Linux)。如果这不适合你,我会做一个小脚本,显示所有三个图像(基本版本和两个冲突的版本),让你选择“赢家”。

答案 1 :(得分:0)

您可以对图像进行uuencode或base64编码(您可以设置钩子进行自动转换),这样您在合并时就不必处理二进制文件了。但是,合并通常适用于行而不是字符,我没有这么有效,因为enocding通常不包含新行。

答案 2 :(得分:0)

Araxis Merge website表示它将integrate with Mercurial。该产品是商业产品,因此如果您拥有许可证,您可能希望了解有关在Mercurial中使用其产品的信息。

如果您没有许可证并且想要使用他们的产品,他们可能会帮助您使演示工作。然后你可以使用假存储库来模拟问题并测试它......

如果您想继续使用Commercial,那么在每个文件的基础上手动配置合并工具是唯一的方法。我不知道任何支持合并的开源或免费绘画程序。作为MS Paint的子程序,您可以将Paint.net配置为使用Mercurial(手动)。

答案 3 :(得分:0)

这是配置Mercurial以使用MS Paint合并图像的基本方法。

首先在Windows系统路径上的某处创建一个文件mspaintmergetool.cmd(以便Mercurial可以找到它),包含:

START %WINDIR%\system32\mspaint.exe %1
START %WINDIR%\system32\mspaint.exe %2
START %WINDIR%\system32\mspaint.exe %3
START /WAIT %WINDIR%\system32\mspaint.exe %4

然后将Mercurial配置为使用此脚本合并图像,方法是将以下内容添加到.hgrcmercurial.ini

[merge-tools]
mspaintmergetool.args = $base $local $other $output
mspaintmergetool.binary = True

[merge-patterns]
**.bmp = mspaintmergetool
**.png = mspaintmergetool
**.jpg = mspaintmergetool

如果在合并期间名为cat.png的图像发生冲突,则会打开四个MS Paint实例:

  1. cat.png~base - 这就是在开发拆分为现在尝试合并回来的两个流之前图像的样子
  2. cat.png~orig - 这是您将合并到(a.k.a.local)的分支中的图像。它是您在开始此合并之前在工作目录中开始的图像
  3. cat.png~other - 这是您正在合并 (a.k.a. remote)
  4. 的分支中的图像
  5. cat.png - 当此Paint实例打开时,它最初包含与~orig相同的图像;您的任务是将此实例中的图像编辑为~orig~other的组合,保存并退出此Paint实例。退出时,Mercurial会将冲突标记为已解决并继续合并。请注意,前三个实例不会自动关闭,因此为避免与潜在的剩余冲突图像混淆,您可能需要在关闭此实例之前手动关闭这些实例。
相关问题