Zurückgewiesener Patch anwenden
Möchte man einen Patch auf eine Datei anwenden, dieser wird allerdings zurückgewiesen, da die Datei bereits Änderungen vor den eigentlich geänderten Zeilen besitzt welche mit dem Patch in Konflikt stehen, so kann mit wiggle versucht werden den Patch doch noch anzuwenden. Im FreeBSD-Portbaum findet man wiegle unter textproc/wiggle:
# cd /usr/ports/textproc/wiggle && make install clean
Im folgenden Beispiel schlägt ein Patch fehl, da Zeilen vor der eigentlichen Änderung in der zu patchenden Datei geändert wurden. Dabei wird automatisch eine .rej Datei angelegt, welche den Konflikt beinhaltet:
# patch < test.patch Hmm... Looks like a unified diff to me.. Patching file datei using Plan A... Hunk #1 failed at 2. Hunk #2 failed at 4. 2 out of 2 hunks failed--saving rejects to datei.rej done
Nun kann wiggle die zu patchende Datei und die .rej-Datei angegeben werden und das Ergebnis wird dabei auf der Standardausgabe ausgegeben. Im Gegensatz zu patch(1) versucht nun wiggle die Änderung wortweise an anzuwenden und so führt dies auch zum Erfolg obwohl Zeilen geändert wurden, welche auch in der Patchdatei aufgeführt sind:
# wiggle datei datei.rej
Ist das Ergebnis zufriedenstellend kann mit der --replace Option die Änderung in die Datei geschrieben werden.
# wiggle --replace datei datei.rej
Mehr Informationen zu wiggle findet man in der Manpage wiggle(1).