diff, patch – kurz und bündig

Von | 14. Juli 2009

diff und patch setze ich nicht oft ein. Deswegen muss ich jedes mal in den manpages blättern. Daher hier die kurze Notiz:

  1. Einen Patch anwenden:
    patch < bar.patch
    

    Dabei muss aber der Name des zu patchende Files im Patch enthalten sein (unified format). Ist das nicht siehe 2.

  2. Einen Patch auf ein bestimmtes File anwenden:
    patch bar.conf < bar.patch
    
  3. Soll ein Patch auf ein gesamtes Verzeichnis angewandt werden ist der Aufruf ähnlich.
    patch -p1 < bar.patch
    

    Achtung! Der "p level" beschreibt wieviele Verzeichnisnamen aus den jeweilgen Pfad entfernt werden müssen. Nachdem man sich normalerweise im root Verzeichnis des Source Baums befindet nimmt man oft "1". Enthält der Patch aber ganze Pfade wie zum Beispiel: /home/gmueller/projekte/src/net/ftp.c und selbst befindet man sich in einem Arbeitsverzeichnis, das net/ftp.c enthält ist der Patch Level "5".

    patch -p5 < bar.patch
    

    Kurz gesagt: Einfach die Slashes zählen, die vor den Verzeichnissen existieren, die im aktuellen Pfad auch vorhanden sind.

  4. Einen Patch wieder entfernen:
    patch -p5 -R < baz.patch
    
  5. Diff eines Files anlegen
    diff -u original.conf neuesfile.conf > ein.patch
    
  6. Patch eines gesamten Verzeichnis
    diff -rupN original/ neu/ > ein.patch
    

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.