在试图让我真正的差分引擎上升时,我已经修剪到一个非常小的设置,但仍然没有输出,也没有迹象表明为什么没有发生任何事情。 (搜索SO和Mercurial网站(包括mercurial wiki)为extdiff提供了我尝试过的所有想法,但也许我还没有尝试过。)
我尝试了一个bash脚本和一个.bat文件;我已经尝试了位于E:驱动器“root”中的每个脚本,标识为/ cygdrive / e /或E:/我尝试过和不用引用脚本的路径。我想我已经用尽了这些组合,并且还没有得到任何关于什么(如果有的话)正在运行的迹象。直接调用时,FdbCmp.bat的行为与预期的一样;它位于我的$ PATH目录和Windows Path环境变量中。
其他建议?它看起来很简单,应该“正常工作”
mercurial.ini包含
[extdiff]
hgext.extdiff
cmd.fdiff0 = "e:/Program Files/DbCmp/FdbCmp.bat"
opts.fdiff0 = $root --file $local --file $other
FdbCmp.bat:
@echo off
echo FdbCmp.bat testing
echo FdbCmp.bat args: ::%1:: ::%2:: ::%3 ::%4:: ::%5:: ::%6:: ::%7:: ::%8:: ::%9::
hg showconfig | grep extdiff 返回预期的结果(在其他一些行中)
extdiff.cmd.fdiff0="e:/Program Files/DbCmp/FdbCmp.bat"
extdiff.opts.fdiff0=$root --file $local --file $other
extensions.hgext.extdiff=
hg fdiff0 以$返回? = 0(cygwin bash或CMD.EXE)并且没有显示输出。我预计FdbCmp.bat文件会打印一些东西。
hg fdiff0 a b c (其中文件a,b,c不存在)返回以下内容。这是预期的,因为文件不存在而且Hg报告了这一点。
a: The system cannot find the file specified
b: The system cannot find the file specified
c: The system cannot find the file specified
hg fdiff0 file1 file2 file3 其中所有文件都存在,返回时没有错误且没有输出。这是意料之外的 - 应该调用FdbCmp.bat并将其打印出来。
仅测试.bat文件就可以得到预期的结果:
$ FdbCmp.bat moo cow oink pig
FdbCmp.bat testing
FdbCmp.bat args: ::moo:: ::cow:: ::oink ::pig:: :::: :::: :::: :::: ::::
hg --version是2.4.6-35ba170c0f82
答案 0 :(得分:1)
我想,你必须重新阅读"Extdiff extension" wiki page
无论如何,如果您想使用hg diff FILE1 FILE2
之类的hg fdiff FILE1 FILE2
来进行差异化,那么(见差异)
[extensions]
hgext.extdiff =
(可能只是extdiff =
,必须测试)
[exdiff]
部分,在本节中定义外部差异和命令选项的新命令(带有3个文件的差异???),也许是这样(FdbCmp.bat添加到PATH) cmd.fdiff = FdbCmp.bat
opts.fdiff = $0 --file $1 --file $2
我的样本高于结果命令
hg fdiff /PATH/TO/ B C
必须在引擎盖下产生
FdbCmp.bat /PATH/TO/ --file B --file C
答案 1 :(得分:1)
重新阅读文档的extdiff部分显示选项“将被插入到程序名称和文件/目录之间的命令以进行diff”,这与merge-tools行为不同,其中选项和文件可能混合在一起根据需要建立适当的命令行。 $ local,$ root,...变量在extdiff的上下文中不存在;它们是合并工具功能,不适用于此处。
相关的mercurial.ini部分现在是
[extensions]
# enable the extdiff extension
hgext.extdiff =
[extdiff]
# define a jpeg differencing script; no options required
cmd.jpgdiff = HgJpgDiff.bat
# HgJpgDiff.bat is in a directory in my $PATH and contains:
# @rem ... various lines to test if we have been handed directories or files to compare
# @rem ...we only compare files, so this is the only active line
# JpgDiff --file %1 --file %2
[diff-patterns]
**.jpg=jpgdiff
现在所有工作都按照需要进行。将参数回送到文件有助于调试;屏幕上没有显示任何内容。
非常感谢。