diff und patch

Siehe auch

Patch-Dateien listen die Unterschiede zwischen zwei Textdateien auf. Sie werden von diff erzeugt und von patch angewendet. Patches sind im allgemeinen sehr klein, da sie nur die Änderungen zu einer Original-Datei (z.B. Source Code) enthalten; der Umgang mit ihnen ist entsprechend effizient. diff und patch helfen nicht nur Programmierern, sondern jedem, der mit Text-Dateien umgeht und vergleichen muss.

Siehe auch info diff.

diff

Beispiel für zwei leicht unterschiedliche Dateien:

prog-v1.c
char *debug_st = NULL;
char *sort = NULL;
prog-v2.c
char *debug_str = NULL;
char *sort = NULL;
char *threadsort = NULL;

Erzeugen einer Patch-Datei:

diff prog-v1.c prog-v2.c > prog.patch

Ergibt:

1c1
< char *debug_st = NULL;
---
> char *debug_str = NULL;
2a3
> char *threadsort = NULL;

Die Patch-Datei liest man so:

  • 2a3: Unterschied gefunden in linker Datei in Zeile 2, in rechter Datei in Zeile 3. a = added, d = deleted und c = changed.

  • <: Zeile in linker Datei ist anders als in recher Datei

  • >: Zeile in rechter Datei ist anders als in linker Datei

  • ---: trennt die beiden obigen Ausgaben

Nur die unterschiedlichen Dateien (ohne Details) zweier Verzeichnisse auflisten:

diff --brief --recursive dir1 dir2

Diff Side-by-Side:

diff --side-by-side --width 120 leftfile rightfile

patch

Die Anwendung eines Patches auf eine Datei erfolgt mit patch:

patch prog-v1.c < prog.patch

Um den Patch wieder rückgängig zu machen, genügt:

patch --reverse prog-v1.c < prog.patch

Built on 2023-01-27