Grafisches Diff-Werkzeug Eskil mit vielen Funktionen

Aus LinuxUser 05/2017

Grafisches Diff-Werkzeug Eskil mit vielen Funktionen

© Bayu Harsa, 123RF

Kleiner Unterschied

Mit Eskil haben Sie Unterschiede bei Textdateien sicher im Griff. Bei Bedarf vergleichen Sie sogar gegen ein Versionskontrollsystem.

Gut gepflegter Programmcode verhält sich fast wie ein Schachbrett, bei dem Sie auf Spalte und Zeile genau Änderungen zwischen zwei Zügen erkennen. Hat das Brett aber mehr als die üblichen 64 Felder und erstreckt sich darüber hinaus noch über mehrere Ebenen, dann reicht das Auge kaum aus, um Unterschiede zu erkennen. Als Hilfe bietet sich im Fall von umfangreichen Quellcodes ein Diff-Programm wie Eskil [1] an.

Die Oberfläche des Programms wirkt unspektakulär: Hinter schlicht gestalteten Menüs verbergen sich die Funktionen der Software. Eskil arbeitet mit Tcl/Tk, das Sie daher vorher installieren sollten. Bei Bedarf laden Sie die Software von der Webseite herunter. Hinweise zur Integration von Hand liefert der Kasten “Installation”.

Installation

Legen Sie die ausführbare Datei eskil273.linux in den Pfad, also etwa nach /usr/local/bin/, und schaffen Sie einen symbolischen Link eskil dafür. Der Befehl chmod 755 eskil273.linux, im selben Verzeichnis ausgeführt, stellt das Programm dann für alle Benutzer bereit.

Ins Startmenü der Desktop-Umgebung binden Sie die Software von Hand ein. Bei einigen Dateimanagern besteht außerdem die Möglichkeit, einen Starter auf dem Desktop anzulegen. Falls Sie aus Eskil heraus Dateien editieren möchten, installieren Sie zusätzlich den Editor Emacs.

Programmstart

Starten Sie Eskil via Terminal, können Sie die zu vergleichenden Dateien (Listing 1, Zeile 1) oder Verzeichnisse (Listing 1, Zeile 2) beim Aufruf direkt mit übergeben. Dabei gibt es noch einige interessante Optionen, die Sie in der Tabelle “Programmoptionen beim Start” finden. Alternativ öffnen Sie die Dateien in der Programmoberfläche über den Menüpunkt File | Open both … – zuerst die linke, dann die rechte.

Listing 1

$ eskil Datei1 Datei2
$ eskil Ordner1 Ordner2

Parameter

Aktion

-browse

Dateien beim Start öffnen

-context N

Nur N Zeilen vor und nach der Abweichung anzeigen

-print Datei

Nur PDF-Datei mit Abweichungen erzeugen

-table

Tabellen vergleichen (Änderungen werden in der betroffenen Spalte dargestellt)

TIPP

Beim Vergleich von Verzeichnissen hat sich im Test der Start per Shell als die schnellste Methode herausgestellt.

Von Haus aus kommt eine sehr kleine Schriftgröße zum Einsatz. Klicken Sie deshalb auf Options | Font | Select …, und wählen Sie Art und Größe der Schrift aus. Von Haus aus bietet die Software nur nichtproportionale Schriften an, also solche mit fester Laufweite (Abbildung 1).

Abbildung 1: Fällt die Schriftart für den angezeigten Text zu klein aus, bietet die Software Ihnen die Möglichkeit, eine andere Größe einzustellen oder sogar einen anderen Font auszuwählen.

Abbildung 1: Fällt die Schriftart für den angezeigten Text zu klein aus, bietet die Software Ihnen die Möglichkeit, eine andere Größe einzustellen oder sogar einen anderen Font auszuwählen.

Wenn Sie die Markierung beim Punkt Fixed entfernen, erhalten Sie eine Liste aller installierten Schriften. Für Textdateien sollten Sie zwecks besserer Übersicht aber darauf verzichten. Speichern Sie anschließend die Einstellungen mit Options und Save default.

Textvergleich

Im Beispiel aus Abbildung 2 vergleicht das Tool die Textdatei t1.txt (links) mit t2.txt. Die diversen Farbmarkierungen weisen auf Ergänzungen, Änderungen oder fehlende Teile hin. Die entsprechende Systematik für das Kennzeichnen der Abweichungen fasst die Tabelle “Farbregeln” zusammen.

Abbildung 2: Beide Textdateien enthalten fast den gleichen Inhalt. Auf die Änderungen, Ergänzungen und fehlende Teile weist das Tool mit unterschiedlichen Farbmarkierungen hin.

Abbildung 2: Beide Textdateien enthalten fast den gleichen Inhalt. Auf die Änderungen, Ergänzungen und fehlende Teile weist das Tool mit unterschiedlichen Farbmarkierungen hin.

Farbe

Datei links

Datei rechts

Bedeutung

Rosa/Rot

X

X

Abweichung bei Zeilennummern

Grün

X

Abweichung der linken Seite

Blau

X

Abweichung der rechten Seite

Um sich nun schrittweise durch die Unterschiede zu arbeiten, hilft Ihnen die Werkzeugleiste. Diese aktivieren Sie durch Options |Toolbar (Abbildung 3). Die Software zeigt daraufhin die gewählten Zeilennummern rot und deren Hintergrund gelb an. Durch einen Klick auf Next Diff gelangen Sie zur nächsten Abweichung, mit Prev Diff springen Sie einen Punkt zurück.

Abbildung 3: Haben Sie die Werkzeugleiste aktiviert, erhalten Sie Zugriff auf Schaltflächen, mit denen Sie schrittweise die Unterschiede zwischen den Dateien durchgehen.

Abbildung 3: Haben Sie die Werkzeugleiste aktiviert, erhalten Sie Zugriff auf Schaltflächen, mit denen Sie schrittweise die Unterschiede zwischen den Dateien durchgehen.

Wenn Sie lieber mit Filzstift und Lineal arbeiten oder einfach die Unterschiede lieber Schwarz auf Weiß dokumentieren wollen, erstellen Sie über File | Print PDF … eine entsprechende Ausgabe. Im gleichen Menüpunkt passen Sie bei Bedarf die Farben an, allerdings ohne ein Farbrad oder ähnliche Hilfen.

Merge

Um Dateien zusammenzufügen, klicken Sie auf Tools | Merge. Es öffnet sich ein neues, zusätzliches Fenster (Abbildung 4), in dem Sie mithilfe der Schaltflächen Next und Prev oder über die Cursor-Tasten zu den voneinander abweichenden Passagen springen. Anschließend entscheiden Sie für jede, ob Sie die im Hauptfenster links (L) oder rechts (R) stehende Version übernehmen wollen.

Abbildung 4: Mit der Merge-Funktion führen Sie bei Bedarf zwei Dateien mit Unterschieden zusammen.

Abbildung 4: Mit der Merge-Funktion führen Sie bei Bedarf zwei Dateien mit Unterschieden zusammen.

Falls Sie die Abweichungen stattdessen zusätzlich einfügen wollen, verwenden Sie anstelle L oder R die Funktionen LR und LR. Mit LR erreichen Sie, dass der in der linken Spalte stehende Text unverändert bleibt, die in der rechten Spalte befindliche Abweichung fügt das Programm darunter an. Bei RL verhält es sich genau umgekehrt.

Abbildung 5 zeigt das Resultat aus dem Test. Unter dem Menüpunkt Select finden Sie noch die Möglichkeit, “eine Seite” komplett zu übernehmen (All left, All right).

Abbildung 5: Wahlfreies Zusammenlegen der Änderungen.

Abbildung 5: Wahlfreies Zusammenlegen der Änderungen.

Verzeichnisse vergleichen

Mit Eskil vergleichen Sie bei Bedarf sogar die Inhalte verschiedener Unterverzeichnisse. Nach dem Programmstart stellt die Software diese gegenüber. Hierbei gelten folgende Regeln für die Farbe der Namen der Objekte: * Schwarz kennzeichnet auf beiden Seiten vorhandene, identische Objekte; * Rot beidseitig vorhandene, jedoch nicht identische; * Blau nur links vorhandene Objekte und * Grün solche, die es nur rechts gibt.

Abbildung 6 zeigt eine derartige Struktur: Die linke Spalte enthält dabei die Inhalte beider Unterverzeichnisse miteinander vereinigt. In die darüberliegenden Verzeichnisse gelangen Sie durch Klick auf die grünen, einfach vorhandenen Pfeile jeweils links oder rechts. Für beide Spalten synchron gelingt das mit dem mittleren Symbol, das beide Pfeile führt.

Abbildung 6: Das Fenster für den Vergleich von Unterverzeichnissen fällt komplexer aus als die Ansicht zum Vergleichen von Dateien.

Abbildung 6: Das Fenster für den Vergleich von Unterverzeichnissen fällt komplexer aus als die Ansicht zum Vergleichen von Dateien.

Absteigen wiederum erfolgt per Rechtsklick und go down left beziehungsweise go down right. Mit einem Rechtsklick auf das unter Structure angezeigte Verzeichnis rufen Sie weitere Funktionen auf.

Mit expand all klappt das Programm die komplette zu vergleichende Struktur im Fenster aus, mit collapse all bleibt nur bei Structure der Vergleich als Symbol zu sehen. Dieselbe Funktion erreichen Sie mit einem Klick auf das kleine Pfeilsymbol, mit dem Sie die Bäume öffnen und schließen.

Das Auflisten identischer Objekte unterbinden Sie bei Bedarf mit prune equal. Einen Punkt zum Aufheben des Filters finden Sie allerdings im Kontextmenü nicht. Vielmehr gelangen Sie per [Alt]+[C] beziehungsweise über File | compare wieder in die vollständige Ansicht.

Als ungleich gekennzeichnete Dateien (Rot) vergleichen Sie miteinander, indem Sie in der Spalte Structure darauf klicken, was die Zeile markiert. Führen Sie den Mauszeiger jetzt über eine der Datenspalten und klicken dort mit der rechten Maustaste, dann klappt das Kontextmenü auf, aus dem Sie Compare Files wählen. Es öffnet sich das Fenster für den Vergleich.

Möchten Sie eine Datei vollständig übernehmen, verwenden Sie die Schaltflächen mit dem Pfeil in der Spalte Copy oder, per Rechtsklick in der Quellspalte, Copy File to ….. Damit synchronisieren Sie im Einzelfall.

Das funktioniert aber nicht bei Unterverzeichnissen als solches. Obwohl das Programm hier die Pfeile zumindest anbietet, gelingt es nicht, Kopien davon zu erstellen. Die Software erlaubt es außerdem nicht, Verzeichnisse anzulegen, um in diese anschließend Dateien zu kopieren.

Das Programm aktualisiert nach dem Ausführen einer Aktion nicht automatisch die Anzeige. Vielmehr setzt das voraus, dass Sie diese entweder mit [Alt]+[C] oder mittels File | compare auf den neusten Stand bringen.

Wenn Sie in diesem Menü auf Edit Left File beziehungsweise Edit Right File klicken, öffnet sich ein Editor, in dem Sie bei Bedarf die Datei bearbeiten. Im Test kam dabei Emacs zum Einsatz, bei Bedarf konfigurieren Sie aber über die Datei ~/.eskilrc einen anderen Editor. Dazu tragen Sie die Zeile aus Listing 2 ein und passen diese an.

Listing 2

set ::Pref(editor) Editor

VCS-Integration

Die Integration der Software in Versionskontrollsysteme (VCS) kam im Test beim parallelen Einsatz von mehreren Systemen ins Schlingern. Laut Website unterstützt das Tool RCS, CVS, Git [2], Fossil [3], Mercurial [4], Bazaar [5], Subversion [6], Perforce und ClearCase, wobei es nicht für alle den gleichen Umfang an Funktionen bietet.

Verwenden Sie mehr als ein System in einem Verzeichnis, bevorzugt Eskil die Varianten Git, Mercurial und Bazaar gegenüber CVS und Subversion. Durch die Optionen -svn oder -cvs räumen Sie den gleichnamigen Programmen manuell den Vorrang ein.

In einem weiteren Test kam lediglich Git zum Einsatz. Nun funktionierte es ganz einfach: Sie starten das Programm und klicken auf File | Revision Diff. Anschließend wählen Sie auf der rechten Seite die lokale Datei aus. Die linke Ansicht zeigt anschließend den Inhalt der Datei im VCS (Abbildung 7).

Abbildung 7: Eskil vermag mit mehreren Versionskontrollsystemen zusammenzuarbeiten, allerdings nicht parallel: Dann kommt die Software ins Schlingern.

Abbildung 7: Eskil vermag mit mehreren Versionskontrollsystemen zusammenzuarbeiten, allerdings nicht parallel: Dann kommt die Software ins Schlingern.

Doch damit nicht genug: Es besteht die Möglichkeit, Änderungen aus Eskil heraus ins VCS zu übertragen. Klicken Sie hierzu Commit, und tragen Sie im sich öffnenden Fenster einen Kommentar ein. Schließen Sie die Eingabe dann mit Commit ab, und klicken Sie auf File und Redo Diff. Beide Ansichten dürfen nun keinen Unterschied mehr aufweisen.

Der umgekehrte Weg ist ebenfalls möglich: Möchten Sie die lokale Kopie anpassen, klicken Sie auf Revert. Damit entspricht der Inhalt jenem aus dem VCS. Hier müssen Sie die Ansicht durch File | Redo Diff aktualisieren.

Fazit

Eskil präsentiert sich als kleines, feines Werkzeug für alle beim Vergleichen von Dateien und Verzeichnissen anfallenden Aufgaben. An manchen Stellen könnte es noch Nachbesserungen vertragen, schlug sich im Test aber so gut, dass es durchaus das Prädikat “alltagstauglich” verdient. 

Der Autor

Harald Zisler beschäftigt sich seit den frühen 90er-Jahren mit FreeBSD und Linux. Zu Technik- und EDV-Themen verfasst er Bücher und Beiträge für Zeitschriften. Aktuell ist die vierte Auflage von “Computer-Netzwerke” erschienen.

Infos

  1. Eskil: http://eskil.tcl.tk

  2. Git: https://git-scm.com

  3. Fossil: Frank Hofmann, “Im Gleichklang”, LU 12/2016, S. 84, https://www.linux-community.de/36944

  4. Mercurial: Tim Schürmann, “Auf den Zweig gekommen”, LU 05/2014, S. 74, https://www.linux-community.de/31438

  5. Bazaar: Martin Steigerwald, Reinhard Tartler, “Verteilte Versionsverwaltung mit Bazaar”, Linux-Magazin 06/2007, S. 102

  6. Subversion: Kristian Kißling, “Subversion für Anfänger”, LU 09/2007, S. 34, https://www.linux-community.de/13772

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 05/2017 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben