„Diff“ – Versionsunterschied
[ungesichtete Version] | [ungesichtete Version] |
K {{Korrekter Titel}} → {{DISPLAYTITLE}} |
jetzt geht die alphabetische reihenfolge sogar nach dem alphabet welches ich kenne ;) |
||
Zeile 23: | Zeile 23: | ||
Etliche Tools, die auf verschiedenen Plattformen laufen, basieren auf der diffutils-Engine des [[GNU]]-Projektes und stellen ein graphisches [[Frontend]] für die selben Informationen dar. Einige dieser Programme können Dateien auch bearbeiten und zusammenführen. Diese Liste enthält einige der [[Freie Software|freien]] Werkzeuge in alphabetischer Reihenfolge. |
Etliche Tools, die auf verschiedenen Plattformen laufen, basieren auf der diffutils-Engine des [[GNU]]-Projektes und stellen ein graphisches [[Frontend]] für die selben Informationen dar. Einige dieser Programme können Dateien auch bearbeiten und zusammenführen. Diese Liste enthält einige der [[Freie Software|freien]] Werkzeuge in alphabetischer Reihenfolge. |
||
* [http://www.componentsoftware.com/Products/CSDiff/index.htm CSDiff] (englisch, Freeware für Windows) |
* [http://www.componentsoftware.com/Products/CSDiff/index.htm CSDiff] (englisch, Freeware für Windows) |
||
* [http://www.diffdaff.de DiffDaff] (deutsch, Freeware für Windows) |
|||
* [http://meld.sourceforge.net Meld] (englisch, Skript für Linux, erfordert gnome und python) |
|||
* [http://kdiff3.sourceforge.net KDiff3] (englisch, Open Source für Windows, Linux, Unix, MAC) |
* [http://kdiff3.sourceforge.net KDiff3] (englisch, Open Source für Windows, Linux, Unix, MAC) |
||
* [[Kompare]] (Open Source für Linux) |
* [[ Kompare]] (Open Source für Linux) |
||
* [http://sourceforge.net |
* [http://meld.sourceforge.net Meld] (englisch, Skript für Linux, erfordert gnome und python) |
||
* [http:// |
* [http://sourceforge.net/projects/tkdiff/ tkdiff] (englisch, Open Source für Windows und Linux) |
||
* [http://winmerge.sourceforge.net WinMerge] (englisch, Open Source für Windows) |
* [http://winmerge.sourceforge.net WinMerge] (englisch, Open Source für Windows) |
||
* [http:// |
* [http://xxdiff.sourceforge.net xxdiff] (englisch, Open Source für Linux/OpenBSD) |
||
== Siehe auch == |
== Siehe auch == |
Version vom 5. September 2007, 14:26 Uhr
diff ist ein Unix-Programm, das die Unterschiede zwischen zwei Textdateien synoptisch ausgibt.
Die Ausgabe des Programms wird oft mit demselben Namen wie das Programm selbst als diff bezeichnet. Es wird auf der Kommandozeile mit den Namen von zwei Textdateien als Parameter ausgeführt:
$ diff erstedatei.txt zweitedatei.txt
Die ersten Versionen des Programms wurden programmiert, um Zeilen von Textdateien zu vergleichen. Seit 1980 unterstützt diff auch Binärdateien.
Im vereinheitlichten Format (unified diff) wird jede Zeile, die nur in der ersten Datei vorkommt, mit einem Minuszeichen gekennzeichnet, jede Zeile, die nur in der zweiten Datei vorkommt, wird mit einem Pluszeichen gekennzeichnet. Alle anderen Zeilen werden durch ein Leerzeichen gekennzeichnet.
Zeilen, die mit drei Pluszeichen gekennzeichnet werden, zeigen die Anzahl der Zeilen in jedem Stück, die Dateinamen, und wo in der Datei diese zu finden sind.
Die Ausgabe von diff wird oft als Eingabe für patch verwendet.
Geschichte
Das diff-Programm wurde in den frühen 1970er Jahren auf dem Unix-Betriebssystem von AT&T Bell Labs in Murray Hill, New Jersey, USA entwickelt. Die endgültige Version, die zu diesem sehr frühen Unix-System gehörte, wurde vollständig von Douglas McIlroy geschrieben. Diese Untersuchungen wurden 1976 in einem Dokument veröffentlicht, das von James W. Hunt mitverfasst wurde, welcher auch eine der anfänglichen Versionen von diff schrieb.
McIlroys Arbeit wurde beeinflusst von Steve Johnsons Vergleichs-Programm auf GECOS und Mike Lesks proof-Programm, welches wie diff auch auf Unix entstanden ist. Proof produzierte Zeile-für-Zeile-Änderungen wie diff und verwendete dafür Spitze-Klammern (">" und "<"), um Zeilen-Einfügungen und Zeilen-Entfernungen in der Ausgabe des Programms darzustellen. Die heuristische Methode, die diese Programme verwendeten, galt als unzuverlässig. Die potentielle Brauchbarkeit eines diff-Tools inspirierte McIlroy, ein neues, robusteres Programm zu entwickeln, welches viele Anwendungsmöglichkeiten hatte, aber trotzdem eine gute Performance in den Prozessor- und Speicher-Limits der PDP-11-Hardware lieferte. Sein Erfolg war ein Ergebnis der Zusammenarbeit mit den Leuten von Bell Labs, inklusive Alfred V. Aho, Elliot Pinson, Jeffrey Ullman und Harold S. Stone.
Freie Softwareimplementierungen
Das GNU-Projekt stellt eine Implementierung von diff (und diff3) im Paket diffutils (englisch) zur Verfügung. Dort findet sich auch eine sehr umfangreiche Dokumentation zum Befehl.
Etliche Tools, die auf verschiedenen Plattformen laufen, basieren auf der diffutils-Engine des GNU-Projektes und stellen ein graphisches Frontend für die selben Informationen dar. Einige dieser Programme können Dateien auch bearbeiten und zusammenführen. Diese Liste enthält einige der freien Werkzeuge in alphabetischer Reihenfolge.
- CSDiff (englisch, Freeware für Windows)
- DiffDaff (deutsch, Freeware für Windows)
- KDiff3 (englisch, Open Source für Windows, Linux, Unix, MAC)
- Kompare (Open Source für Linux)
- Meld (englisch, Skript für Linux, erfordert gnome und python)
- tkdiff (englisch, Open Source für Windows und Linux)
- WinMerge (englisch, Open Source für Windows)
- xxdiff (englisch, Open Source für Linux/OpenBSD)
Siehe auch
Literaturnachweis
- Hunt, James W. und McIlroy, M. Douglas, "An Algorithm for Differential File Comparison," 41, Computing Science Technical Report, Bell Laboratories, June 1976. [1] (englisch)
- "Comparing and Merging Files with GNU Diff and Patch", von David MacKenzie, Paul Eggert, und Richard Stallman (ISBN 0954161750) [2] (englisch)
- E. Myers, "An O(ND) Difference Algorithm and Its Variations," Algorithmica 1, 2 (1986), 251-266.
- Eine gewöhnliche Implementierung des Myers SES/LCS Algorithmus [3] (englisch)