代码之家  ›  专栏  ›  技术社区  ›  fakeleft

在Mercurial中处理图像(BMP、PNG、JPG等)文件合并冲突

  •  4
  • fakeleft  · 技术社区  · 15 年前

    至少,我想要的是让“hg merge”在并排的实例中打开冲突的版本,比如ms paint(ugh),这样我就可以手动进行合并。除了MS paint以外的工具建议的奖励积分。现在我在看 Araxis Merge .

    4 回复  |  直到 10 年前
        1
  •  2
  •   Martin Geisler    15 年前

    请看 merge tool configuration page 在反复无常的维基里。您可以使mercurial基于文件扩展名启动特定的合并工具。

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

        2
  •  0
  •   user141335    15 年前

    您可以对图像进行uuencode或base64编码(您可以为自动转换设置挂钩),这样在合并时就不必处理二进制文件。但是,合并通常在行上工作,而不是在字符上工作,我不知道这有多有效,因为enocding通常不包含新行。

        3
  •  0
  •   Frank V    15 年前

    这个 Araxis Merge website 声明它将 integrate with Mercurial .该产品是商业性的,因此如果您有许可证,您可能希望向他们了解有关使用Mercurial产品的信息。

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

    如果您试图远离商业模式,那么在每个文件的基础上手动配置合并工具是唯一的方法。我不知道有任何开源或免费的画图程序可以支持合并。作为ms paint的一个子函数,您可能可以将paint.net配置为使用mercurial(手动)。

        4
  •  0
  •   Edward Grech    10 年前

    这里是配置mercurial的一种基本方法,可以使用ms paint合并图像。

    首先创建一个文件 mspaintmergetool.cmd 在Windows系统路径的某个位置(以便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配置为使用此脚本合并图像,方法是将以下内容添加到 .hgrc mercurial.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.本地);这是在开始此合并之前在工作目录中开始使用的图像。
    3. cat.png~other -这是您要合并的分支中图像的外观 (又名远程)
    4. PNG -当此绘制实例打开时,它最初包含的图像与 ~orig ;您的任务是将此实例中的图像编辑为 ~ORIG ~other ,保存并退出此绘制实例。一旦退出,Mercurial将标记冲突已解决,并通过合并继续。请注意,前三个实例不会自动关闭,因此为了避免与可能剩余的冲突图像混淆,您可能需要在关闭此实例之前手动关闭这些绘制实例。