使差异输出更具可读性


12

我正在寻找一种工具,将采取的diff /使用debdiff输出(更具体地,输出这个脚本),并显示在一个高度可读的,图形化的方式的比较结果。任何指针将不胜感激。

理想情况下,它将等于MDR的GTK +,FOSS 。

Meld,Diffuse和类似软件不适用于此目的,因为它们旨在独立工作,并且不从stdin接收输入。

Answers:


8

Kompare可以做到这一点(也是最好的GUI diff-viewer IMO):

./whatchanged package_name | kompare -

注意作为输入文件参数的“-”。大多数* nix程序都有此接口来接受管道输入,因此您可以使用任何喜欢的接口。


是的,我尝试了Meld,但是发生的是Meld立即启动并获取脚本的中间输出,而不是在脚本完成并获取diff输出后立即启动。我可能需要调整脚本的流程,以使其与通过管道传输的Meld和其他软件一起正常工作。通过“ bzr差异”和常规差异输出,Meld以VCS模式而不是文件比较模式启动。
2010年

我通过使用-a选项启动Meld解决了VCS模式问题。Kompare也可以工作。剩下的就是使脚本具有管道意识。
mgunes,2010年

3

如果您只有控制台,colordiff则是一个很好的解决方案。

要安装它,请sudo apt-get install colordiff在终端中运行此命令


2

我喜欢将vim的内部语法突出显示用作寻呼机,以便可以查看彩色的差异。例如,将其放入您的.bashrc

sudo apt-get install vim
alias vless='vim -u /usr/share/vim/vimcurrent/macros/less.vim'

(然后重新源你.bashrc. ~/.bashrc。)然后你可以运行vless为您的寻呼机:

vless /path/to/your.diff

它不是图形的,但至少是突出显示的。


但是他没有要求提供彩色差异文件,而是要求提供图形差异。这暗示您需要能够读取差异文件本身一样多的原始文件。
Martin Owens -doctormo-

好吧,“必须从标准输入中读取”。如果排除了“合并”,那么剩下的就不多了。创建差异并打开Meld的另一个答案是图形化的最佳选择。或者它可以启动gedit
Kees Cook

您没有在您的.bashrc中放置“ sudo apt-get install vim”,请进行编辑以使其清楚。
Capi Etheriel 2010年

2

尽管可以在没有太多依赖关系的情况下安装KDE应用程序,但kdiff是一个很棒的差异编辑/合并工具。


1
尽管kdiff(ubuntu档案中的kdiff3)是一个很棒的工具,但它也不能满足OP的问题,因为他们正在寻找一种工具,可以对STDIN进行比较并显示它,并且从我的有限探索中,我看不出有办法做到这一点。另外,如果减少KDE依赖关系成为问题,则ubuntu归档文件包含kdiff3-qt,该文件仅取决于qt,而不取决于KDE堆栈中的库。
史蒂夫·比蒂

2

我将使用这个简单的脚本来使用Meld(或任何其他现有工具),那样您将获得一些灵活性:

#!/bin/bash

TMPDIR=`mktemp -d`
DIFF_FILE=`mktemp`
TARGET='./'

cat /proc/$$/fd/0 > $DIFF_FILE
cd $TARGET
rsync -apvz --delete --stats --compress --progress $TARGET $TMPDIR
patch -R -p0 -d $TMPDIR < $DIFF_FILE
meld $TARGET $TMPDIR

用meld和bzr diff的输出进行了测试,因此将其复制到/ usr / bin和chmod 755中,然后执行以下操作:

bzr diff | meld-diff

结果显示出预期的效果。


4
虽然在单用户计算机上这不是什么大问题,但您应该安全地使用mktempmktemp -d生成临时文件和目录,如果没有其他原因,那么您可以同时对多棵树执行差异而不会造成麻烦另一个。
史蒂夫·比蒂

它与bzr diff一起使用,但仅在目录比较模式下有效。我也希望能够比较单个文件。我将尝试对其进行改进,使其也可以实际与我的脚本一起使用,但目前尚不支持。谢谢。
mgunes,2010年

如果您认为使用脚本的想法不错,请标记我。到目前为止,我已经被大大降低了。
Martin Owens -doctormo- 2010年

1

我知道您不要求集成到编辑器中的差异工具,但是我确定在了解了您的编辑器可以提供的内容之后,可以避免上下文切换(从编辑器到终端,再回到编辑器)。emacs和vim都带有差异工具。

  • 对于emacs,您将使用Ediff模式(默认安装)。查看此Wiki页面或查阅官方手册

  • 使用emacs很简单,只需键入Alt + x和即可ediff

  • 您可以使用ediff浏览器浏览存储库的分支和修订版本之间的差异(bzr,git,svn等)。


您介意演示一个简单的示例,该示例如何使用当前工作副本(多个文件)来对远程跟踪的git分支进行ediff吗?
mlt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.