Was bedeutet X11? Sie wissen es nicht, egal ...  Interesse ? Info hier: X Window System
Linux-Server-Administratoren, sollten es jedoch wissen!
Das X Window System ist Netzwerkfähig wie wir, multiflexibel und anpassungsfähig!
  • Produkte
  • News
  • Support
  • Service/FAQ
  • Referenzen
  • Links
  • Seite Drucken
  • Kontakt
  • Impressum
  • FAQ
  • Linux Server HowTo
  • Typo3 Extensions
  • Kleine Helfer
  • SSL Root Cert

Ein "diff" erzeugen mit dem GNU Programm diff

Syntax:

diff  [-optionen ]  dateiname1.php  dateiname2.php

 

Beschreibung:

Diff vergleicht die beiden angegebenen Dateien und gibt auf die Standardausgabe aus, welche Zeilen wie geändert werden müssen. Ein "diff" kann dann unter Verwendung des GNU Programmes patch wieder in eine andere original Datei eingefügt werden, man nennt das auch Patchen. Das Programm patch weiß anhand der Informationen welche diff erzeugt hat, ganz genau an welcher Stelle (Zeile) was geändert werden muss.

 

Es besteht auch die Möglichkeit aus den Unterschieden von 2 Verzeichnissen ein "diff" zu erzeugen.

 

Wir erstellen erst mal ein "unified diff" mit Parameter -u (vereinheitlicht) aus zwei verschiedenen Dateien, diese Variante wird meistens angewendet bzw. gebraucht.

Die Ausgabe von diff wird dabei einfach mit > in eine neue Datei umgeleitet:

diff  -u  original.php  gaenderte.php  >  meinpatch.diff

Wir erstellen nun ein "unified diff" aus zwei Verzeichnissen.

Entscheidend hierfür ist der Parameter -r (Vergleiche jegliche Unterverzeichnisse rekursiv).:

diff  -ru  originalverzeichnis/  gaendertverzeichnis/  >  meindirpatch.diff

 

Einen Patch einspielen mit dem GNU Programm patch

Syntax:

patch  [-optionen]  <  name_des_Patch.diff

 

Beschreibung:

Das Unixprogram patch manipuliert Quelltext anhand eines Patches. Es ist somit das Gegenstück zu dem Programm diff, das Patches erzeugt.

 

Zum Testen kann der Parameter --dry-run (Keine änderungen an Dateien, nur die Ausgabe was währe wenn ...) verwendet werden. Weiter ist eventuell auch noch der Parameter -b oder --backup zu empfehlen, da hiermit automatisch Sicherheitskopien der betreffenden Dateien gemacht werden.

 

Der Parameter -p1 bringt patch dazu, die Änderungen der Dateien, die in dem Patch angegeben sind, anzuwenden und den ersten Teil des Pfades zu den Dateien zu überspringen. Patches werden oft so erstellt, dass das Hauptverzeichnis des Quellcode-Baumes in dem Patch enthalten ist, sollen die Dateien aber von innerhalb des Hauptverzeichnisses gepatcht werden, muss patch der Parameter -p1 übergeben werden.

Zum Beispiel unter der Annahme der Dateiname in der Patchdatei war:

/u/howard/src/blurfl/blurfl.c

 

Ein setzen des Parameters -p0 würde die Datei nicht modifizieren,

 

Paramenter -p1 würde daraus u/howard/src/blurfl/blurfl.c ohne den führenden "/" machen ,

 

Parameter -p4 würde daraus blurfl/blurfl.c machen

 

und ohne -p würde es blurfl.c sein.

 

Mit dem Parameter -R kann man Änderungen eines einmal angewendeten Patches zurücknehmen.

patch  -p1  <  patchdatei.diff