BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

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).

 Permalink

Comments

No new comments allowed (anymore) on this post.