Mercurial:extdiff会为工作目录创建一个不必要的快照?

时间:2010-07-20 01:43:36

标签: mercurial diff

这就是我在Mercurial.ini中所拥有的......

[extdiff]
cmd.bcomp = C:\Program Files\Beyond Compare 3\BCompare.exe
opts.bcomp = /leftreadonly 

因此,除了之外,extdiff扩展工作正常,即使比较的一方是我的工作目录,例如我只提供一个修订参数的情况,例如hg bcomp -r 25要获得rev25和工作目录之间的差异,它会导致我的差异工具(在本例中为BC3)打开文件夹比较会话,将rev25的快照与快照的快照进行比较工作目录,例如......

left:  C:\Windows\Temp\extdiff.v20d13s\MyCode\ 
right: C:\Windows\Temp\extdiff.q78g269\MyCode\ 

有没有办法让我告诉它与右侧的实际工作目录相区别,以便我可以从差异工具内部进行编辑?这似乎通过SVN的外部差异功能很好地工作。我意识到它会在右边显示很多孤儿 - 我很高兴因为不得不过滤掉它们。

3 个答案:

答案 0 :(得分:5)

我从未找到一种方法来阻止extdiff将更改的文件复制到Temp目录,但如果您的diff工具允许就地编辑,那么Mercurial会将更改的文件复制回工作目录你退出该工具。

例如,使用Beyond Compare,这是我Mercurial.ini的相关部分:

[extdiff]
cmd.bcomp = C:\Program Files\Beyond Compare 3\BCompare.exe
opts.bcomp =/expandall /solo /lro

答案 1 :(得分:0)

extdiff仅将两个更改集之间的不同文件复制到临时目录,以便diff工具不会显示相同的文件。如果它可以检测到一个版本正在工作副本并且只是传递工作目录,那就太好了,任何不错的diff工具都应该允许你忽略相同的文件。

这就是为什么如果你hg bcomp <file1> -r<rev>你确实会看到工作副本,因为只有一个文件要差异。

@Niall C's answer很棒,但是如果你不习惯更改临时文件,或者你的差异工具不像bcomp那么酷,那么编写一个小扩展来复制文件应该不难从非工作副本变换集到临时目录,就像extdiff一样,然后在temp目录和你的工作目录之间调用diff工具。

答案 2 :(得分:-1)

我不是Mercurial的专家,但我也有一些关于extdiff的问题,而且我可能无意中找到了你的问题的答案,同时试图找出我的问题。我也可能完全错了。 ; - )

无论如何,在我看来,如果您明确提供要比较的版本号,extdiff会拍摄您要比较的两个版本的快照(即使您没有指定DIFF的两个边;未指定的side是隐含的工作目录。)

我唯一可以让extdiff工作的工作目录就是不指定要比较的版本(我想这样做可以解决问题吗?)。

对不起,我不是非常有帮助。希望你找到答案!