在Mercurial中将特定二进制文件自动转换为要比较(diff)的文本

时间:2011-10-09 22:47:28

标签: mercurial diff mercurial-extension

我在Mercurial存储库中添加了几个-small-二进制文件。这些文件是我的一个开发工具(报告/表单/类定义)的“源”文件。

我制作了一个程序,将这个二进制文件转储到文本文件中,以便在它们之间轻松区分。有没有办法告诉Mercurial某些文件扩展名需要在运行diff程序之前运行此转换?或者我必须将我的转换程序设置为主要差异工具并运行转换 - 或者 - 并且然后运行真正的差异程序?

2 个答案:

答案 0 :(得分:2)

你可以(TBT)使用ExtDiff extension来获得纯粹的Mercurial。在TortoiseHG的情况下

[diff-patterns]
**.ext = difftool

在hgrc中玩游戏

答案 1 :(得分:0)

我最后在diff程序之前使用 small 批处理:

@echo off
set f1=%1
set f2=%2
::Temporary dir created by hg to copy the snapshot file
set tdir=%~dp1
::Original repository dir
set repo=%~dp2
::Filename extension
set ext=%~x1
::The binary files comes in pairs: scx/sct \ vcx/vct ...
set ex2=%ext:~0,-1%t

::Check if "dumpable" extension
echo %ext% | grep -iE "(vcx|vct|scx|sct|pjx|pjt|frx|frt)" > nul && goto DumpFile
goto diff

:DumpFile
set f1="%tdir%\_Dump1.prg"
set f2="%tdir%\_Dump2.prg"
::Get the pair file from the repository
hg cat %repo%\%~n1%ex2% -o "%~dpn1%ex2%" -R %repo%

::Do the dump, then the diff
MyDumpProgram.exe %1 %f1%
MyDumpProgram.exe %2 %f2%
goto diff

:diff
ExamDiff.exe %f1% %f2%
pause

然后在%UserProfile%\。hgrc

中配置批处理
[extdiff]
cmd.ediff = d:\Utiles\diff2.bat