diff出力を読みやすくする


12

私は、差分/ debdiff出力(かかりますツールを探している、より具体的には、出力のこのスクリプトを)と非常に読みやすい、グラフィカルな方法で比較した結果を表示します。任意のポインタをいただければ幸いです。

理想的には、MDRと同等のFOSSであるGTK +になります。

Meld、Diffuse、および同様のソフトウェアは、スタンドアロンで動作することを意図しており、stdinからの入力を受け取らないため、この目的には適していません。

回答:


8

Kompareはこれを行うことができます(そして最高のGUI diff-viewer IMOです):

./whatchanged package_name | kompare -

入力ファイルの引数として指定された「-」に注意してください。ほとんどの* nixプログラムには、パイプ入力を受け入れるためのこのインターフェイスがあります。


はい、Meldで試してみましたが、Meldはすぐに起動され、スクリプトが終了してdiff出力を取得するのではなく、スクリプトの中間出力を取得します。Meldおよびパイプされた他のソフトウェアで適切に動作するように、おそらくスクリプトのフローを調整する必要があります。また、「bzr diff」と通常のdiff出力により、Meldはファイル比較モードではなくVCSモードで起動されます。
mgunes

-aオプションを指定してMeldを起動することにより、VCSモードの問題を解決しました。Kompareも動作します。あとは、スクリプトをパイプ対応にするだけです。
mgunes

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

グラフィカルではありませんが、少なくとも強調されています。


しかし、彼は色付きのdiffファイルを求めず、グラフィカルなdiffを求めました。diff自体と同じくらい元のファイルを読むことができる必要があるというヒント。
マーティンオーウェンス-doctormo-

さて、「stdinからの読み取り」が要件でした。「Meld」が除外されている場合、あまり残っていません。差分を作成してMeldを開くもう1つの答えは、グラフィカルな方法に最適です。または、gedit代わりに起動できます。
キーズクック

.sash apt-get install vimを.bashrcに入れていないので、編集して明確にしてください。
カピエテリエル

2

KDEアプリケーションはあまり多くの依存関係なしにインストールできますが、kdiffは素晴らしいdiff編集/マージツールです。


1
kdiff(ubuntuアーカイブではkdiff3とも呼ばれます)は優れたツールですが、STDINの差分を取得して表示するツールを探しているため、OPの質問も満足できません。それを実現する方法がわかりませんでした。また、KDE依存関係を減らすことが問題である場合、ubuntuアーカイブにはkdiff3-qtが含まれます。これは、KDEスタックのライブラリではなくqtのみに依存します。
スティーブビーティー

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
シングルユーザーマシンではそれほど問題ではありませんが、一時ファイルとディレクトリを安全に使用mktempおよびmktemp -d生成する必要があります。他の理由がない限り、複数のツリーで一度に上書きせずにdiffを同時に実行できます。もう一方。
スティーブビーティー

それはbzr diffで動作しますが、ディレクトリ比較モードでのみ動作します。個々のファイルも比較できるようにしたいです。スクリプトを実際に動作するように改良してみますが、現時点ではそうではありません。ありがとう。
mgunes

スクリプトを使用するという私の考えが良いと思われる場合は、マークアップしてください。これまでのところ、私はマークダウンされすぎています。
マーティンオーウェンズ-doctormo-

1

エディターに統合されたdiffツールを求めていないことは知っていますが、エディターが提供するものについて少し学んだ後は、コンテキストの切り替え(エディターからターミナルへ、そしてエディターへの戻り)を避けることができると確信しています。emacsとvimの両方にdiffツールが付属しています。

  • 以下のためにEmacsの場合は、使用しますEdiffモード(デフォルトでinstaledを)。このwikiページを見るか、公式マニュアルを参照してください

  • emacsの使用は簡単で、単にtype Alt + xとtype だけediffです。

  • ediffを使用して、ブランチとリポジトリのリビジョン(bzr、git、svnなど)の違いを参照できます。


現在の作業コピー(複数のファイル)を使用してリモートで追跡されたgitブランチをediffする方法の簡単な例を示していただけますか?
mlt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.