【问题标题】:git diff - external viewer - get all diff resultsgit diff - 外部查看器 - 获取所有差异结果
【发布时间】:2009-08-11 08:20:40
【问题描述】:

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

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

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

所以

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

不起作用,融合显示“无法从 '/tmp/.diff_VlLwKF 读取”

但是,如果我取消注释

#p.wait()

一切正常,但同样是顺序生成,而不是并行。

谢谢

【问题讨论】:

  • 你使用的是什么环境?应该可以编写一个包装器而不是在后台生成一个查看器并将其用作您的 difftool。
  • 请查看问题,添加更多信息
  • 我认为您可以将 git 配置为不删除用于比较的临时文件(请参阅 git-config/git-difftool 手册页)。
  • 外部 diff 是如何配置的?我只需将 PAGER 环境变量设置为我的外部程序,就可以在其中获得完整的差异文件。

标签: git shell diff


【解决方案1】:

我问了一个关于 SO 的类似问题,想在 BeyondCompare 的选项卡中打开差异文件。我想出了这个:

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

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

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

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

【讨论】:

  • 好极了,这就是我需要的!谢谢!
【解决方案2】:

您可以让 git 为您执行此操作,而不是为每个文件调用 difftool,从(git 1.7.11,2012 年 6 月)开始:
它现在可以比较目录(即在打开 difftool 之前显示所有要比较的文件)

见“git difftool to give directory compare?

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

【讨论】:

    猜你喜欢
    • 2011-04-02
    • 2010-09-20
    • 2014-09-17
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多