git diff - 外部查看器 - 获取所有差异结果 (注:此为提问标题,无需回答)

4
当配置外部diff时,结果会按文件显示,即要查看下一个文件的差异,需要关闭当前运行的diff查看器。
有没有办法让git并行生成所有的diff查看器进程?
如果我仅仅从外部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()

一切运作良好,但是它是顺序生成而不是并行的。谢谢。

你使用的是什么环境?编写一个包装器,可以在后台生成一个查看器,并将其用作您的差异工具。 - CB Bailey
请查看问题,添加了一些更多的信息。 - Art
我认为您可以配置 Git,以便不删除用于比较的临时文件(请参见 git-config/git-difftool 手册)。 - Jakub Narębski
外部差异比较是如何配置的?我只需将PAGER环境变量设置为我的外部程序,就可以在其中获取完整的差异文件。 - drrlvn
2个回答

6

我在Stack Overflow上问过类似的问题,希望能够在BeyondCompare中以标签页的形式打开diff文件。我得出了以下结论:

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

这将获取修改文件的列表,并在每个单独文件上调用外部的diff工具作为后台任务。

请查看此处的详细信息以及我如何使其易于使用。如果您对bash不熟悉,欢迎提出任何改进意见...

编辑1:添加了可选参数(例如'--staged')
编辑2:添加了git别名(请参见链接)。


0

不必为每个文件调用difftool,你可以让git为你完成这个任务,从(git 1.7.11,2012年6月)开始:
现在它可以对目录进行差异比较(即在打开difftool之前显示要比较的所有文件)

请参见 "git difftool to give directory compare?"

因此,也许你现在可以使用一个调用来进行目录比较。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接