mario::konrad
programming / C++ / sailing / nerd stuff
Generieren und Einspielen von Patches
© 2000 / Mario Konrad

Einleitung

diff und patch sind sehr nützliche Tools, wenn auf die Verwendung von Versions-Kontroll Systemen (wie z.B. git) verzichtet wird, oder die Entwickler keine zueinander kompatible Systeme einsetzen.

Diese kurze Beschreibung zeigt, wie patches generiert und dann angewandt werden. Natürlich ist dies keine vollständige Beschreibung der Tools und deren Möglichkeiten, soll aber einen kurzen Einblick in die Verwendung geben.

Patch Generieren

Nehmen wir an, es existiere ein Verzeichnisbaum:

v-1.0
+ hello.c
+ world.c
+ Makefile

Dieses Verzeichnis wird kopiert und Änderungen werden vorgenommen (fett gekennzeichnet):

v-1.1
+ hello.c
+ world.c
+ Makefile
+ foobar.c

Um nun einen Patch von Version 1.0 auf 1.1 zu erstellen begibt man sich in das übergeordnete Verzeichnis

directory
+ v-1.0
+ v-1.1

und erstellt mit Hilfe von diff einen Patch:

$ diff -Naur v-1.0 v-1.1 > patch-1.1

Wir haben nun ein File, das die Differenz von beiden Verzeichnisbäumen enthält

directory
+ v-1.0
+ v-1.1
+ patch-1.1

Patch Einspielen

Hat nun ein Entwickler nur die Version 1.0, so kann er diese mit Hilfe des Patches patch-1.1 auf die Version 1.1 updaten.

Er hat folgendes Verzeichnis (Patch bereits kopiert):

directory
+ v-1.0
+ patch-1.1

Nun muss er zwei Schritte unternehmen um ein update machen zu können:

  1. Patch einspielen
  2. Verzeichnisnamen ändern

Hier sind die zwei Schritte gezeigt:

$ patch -p0 < patch-1.1
$ mv v-1.0 v-1.1

Schon hat auch er auch die neueste Version des Sourcecodes:

directory
+ v-1.1
+ patch-1.1