git diff - 外部查看器 - 获取所有差异结果

时间:2009-08-11 08:20:41

标签: git shell diff

配置外部差异时,每个文件显示结果,即查看当前运行差异查看器所需关闭的下一个文件的差异。

有没有办法让git并行生成所有差异查看器进程?

如果我只是从外部diff脚本中生成进程,显然git会删除它用于比较的临时文件。

所以

#!/usr/bin/python
import subprocess
import sys
p = subprocess.Popen(('/usr/bin/meld', sys.argv[2], sys.argv[5]))
#p.wait()

不起作用,meld显示'无法读取'/tmp/.diff_VlLwKF'

但是,如果我取消注释

#p.wait()

一切正常,但同样,它是连续产卵,而不是平行。

由于

2 个答案:

答案 0 :(得分:6)

我在SO上问了一个类似的问题,希望在BeyondCompare的标签页中打开diff文件。我想出了这个:

for name in $(git diff --name-only $1); do git difftool $1 $name & done

这将获取已修改文件的列表,并在每个单独文件的后台任务中调用外部差异工具。

查看details here以及如何使其易于使用。作为bash的新手,我很想听听任何改进......

编辑1:添加了可选参数(例如'--staged')
编辑2:添加了git别名(see link)。

答案 1 :(得分:0)

除了为每个文件调用difftool之外,你可以让git为你做这件事,从(git 1.7.11,2012年6月)开始:
它现在可以扩展目录(即在打开difftool之前显示所有要比较的文件)

请参阅“git difftool to give directory compare?

所以也许你现在可以使用一个调用,目录为差异。