Verbesserte Lesbarkeit der Diff-Ausgabe


12

Ich bin auf der Suche nach einem Tool, das die Ausgabe von diff / debdiff ( und insbesondere die Ausgabe dieses Skripts ) verarbeitet und das Ergebnis des Vergleichs auf gut lesbare, grafische Weise anzeigt. Alle Hinweise wäre dankbar.

Im Idealfall wäre es das GTK +, FOSS-Äquivalent von MDR .

Meld, Diffuse und ähnliche Software sind für diesen Zweck nicht geeignet, da sie eigenständig arbeiten sollen und keine Eingaben von stdin entgegennehmen.

Antworten:


8

Kompare kann dies (und ist der beste GUI Diff-Viewer IMO):

./whatchanged package_name | kompare -

Beachten Sie das '-' als Argument für die Eingabedatei. Die meisten * nix-Programme verfügen über diese Schnittstelle für die Annahme von Pipe-Eingaben, sodass Sie wahrscheinlich jede beliebige Schnittstelle verwenden können.


Ja, ich habe das mit Meld versucht, aber was passiert ist, dass Meld sofort gestartet wird und die Zwischenausgabe des Skripts erhält, anstatt nach Beendigung des Skripts zu starten und die Diff-Ausgabe zu erhalten. Ich muss wahrscheinlich den Ablauf des Skripts anpassen, um mit Meld und anderer Software, an die es weitergeleitet wird, ordnungsgemäß zu funktionieren. Mit "bzr diff" und regulärer Diff-Ausgabe wird Meld im VCS-Modus und nicht im Dateivergleichsmodus gestartet.
13.

Ich habe das Problem im VCS-Modus gelöst, indem ich Meld mit der Option -a gestartet habe. Kompare funktioniert auch. Alles, was übrig bleibt, ist das Skript Pipe-bewusst zu machen.
17.

3

Wenn Sie nur eine Konsole haben, colordiffist das eine recht gute Lösung.

Führen Sie zur Installation diesen Befehl sudo apt-get install colordiffin einem Terminal aus


2

Ich verwende gerne die interne Syntaxhervorhebung von vim als Pager, damit ich farbige Unterschiede anzeigen kann. Zum Beispiel, wenn Sie dies in Ihre .bashrc:

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

(Und dann geben Sie Ihre Quelle .bashrcmit . ~/.bashrc.) Dann können Sie vlessals Ihr Pager ausführen :

vless /path/to/your.diff

Es ist nicht grafisch, aber es ist zumindest hervorgehoben.


Aber er hat nicht nach farbigen Diff-Dateien gefragt, sondern nach grafischen Diffs. Was darauf hindeutet, dass Sie in der Lage sein müssen, die Originaldateien genauso wie das Diff selbst zu lesen.
Martin Owens -doctormo-

Nun, "read from stdin" war eine Voraussetzung. Wenn "Meld" ausgeschlossen wurde, ist nicht mehr viel übrig. Die andere Antwort, die das Diff erzeugt und Meld öffnet, ist die beste Wahl für Grafik. Oder es könnte geditstattdessen starten .
Kees Cook

Wenn Sie "sudo apt-get install vim" nicht in Ihre .bashrc-Datei einfügen, bearbeiten Sie sie, um dies zu verdeutlichen.
Capi Etheriel

2

Obwohl eine KDE-Anwendung ohne zu viele Abhängigkeiten installiert werden kann, ist kdiff ein großartiges Tool zum Bearbeiten und Zusammenführen von Unterschieden.


1
Obwohl kdiff (auch bekannt als kdiff3 im Ubuntu-Archiv) ein großartiges Tool ist, erfüllt es auch nicht die Frage des OP, da sie nach einem Tool suchen, das einen Unterschied zu STDIN macht und es anzeigt, und von den begrenzten Erkundungen, die ich gemacht habe, Ich konnte keinen Weg finden, das zu erreichen. Wenn die Reduzierung von KDE-Abhängigkeiten ein Problem darstellt, enthält das Ubuntu-Archiv auch kdiff3-qt, das nur von qt und nicht von Bibliotheken aus dem KDE-Stapel abhängt.
Steve Beattie

2

Ich würde dieses einfache Skript verwenden, um meld (oder eines der anderen vorhandenen Tools) zu verwenden. Auf diese Weise erhalten Sie ein wenig Flexibilität:

#!/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

Getestet mit meld und der Ausgabe von bzr diff, also kopiert dies in / usr / bin und chmod 755 und ich tat dies:

bzr diff | meld-diff

Die Ergebnisse zeigen, wie erwartet.


4
Auf Einzelplatzrechnern ist dies zwar kein so großes Problem, aber Sie sollten Ihre temporäre Datei und Ihr temporäres Verzeichnis sicher verwenden mktempund mktemp -dgenerieren, wenn auch nur aus einem anderen Grund, damit Sie Unterschiede auf mehreren Bäumen gleichzeitig ausführen können, ohne ein einziges Clobbern das andere.
Steve Beattie

Es funktioniert mit bzr diff, aber nur im Verzeichnisvergleichsmodus. Ich möchte auch einzelne Dateien vergleichen können. Ich werde versuchen, es zu verfeinern, damit es auch mit meinem Skript funktioniert, was im Moment nicht der Fall ist. Vielen Dank.
11.

Markiere mich, wenn du denkst, dass meine Idee, das Skript zu verwenden, gut ist. Bisher habe ich zu viel abgeschrieben.
Martin Owens -doctormo-

1

Ich weiß, dass Sie nicht nach einem Diff-Tool fragen, das in einen Editor integriert ist, aber ich bin sicher, dass Sie den Kontextwechsel (vom Editor zum Terminal und zurück zum Editor) vermeiden können, nachdem Sie ein wenig über die Möglichkeiten Ihres Editors erfahren haben. Sowohl Emacs als auch Vim werden mit verschiedenen Werkzeugen geliefert.

  • Für den Emacs- Fall verwenden Sie den Ediff-Modus (standardmäßig installiert). Schauen Sie sich diese Wiki-Seite an oder konsultieren Sie das offizielle Handbuch

  • Die Verwendung von Emacs ist einfach, nur Typ Alt + xund Typ ediff.

  • Mit ediff können Sie die Unterschiede zwischen Zweigen und Revisionen Ihres Repositorys (bzr, git, svn usw.) durchsuchen.


Würde es Ihnen etwas ausmachen, ein kurzes Beispiel zu zeigen, wie man einen Git-Zweig mit einer aktuellen Arbeitskopie (mehrere Dateien) fernverfolgt?
mlt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.