|
Sie befinden sich hier: >> Service >> Linux Server HowTo >> Diff erzeugen oder einen Patch einspielen
Ein "diff" erzeugen mit dem GNU Programm diffSyntax: 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 patchSyntax: 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
|