
Kann patch
mit Idempotenz aufgerufen werden; gibt es d. h., gibt es eine Kombination von Optionen, die dazu führt, dass wiederholte Aufrufe patch
denselben Effekt haben wie ein einzelner Aufruf patch
(für einen nicht leeren Diff)?
Antwort1
Einige Patches¹ können mehrfach angewendet werden, daher kann dies nicht garantiert werden; aber
patch -N -r- -i your.patch
wird angewendet your.patch
, wobei alle bereits angewendeten Brocken ignoriert werden.
-N
vermeidet Versuche, einen bereits angewendeten Patch rückgängig zu machen, und -r-
überspringt das Speichern fehlgeschlagener Hunks in .rej
Dateien.
Der entsprechende Befehl mit langen Optionen lautet
patch --forward --reject-file=- --input=your.patch
Wenn Hunks ignoriert werden, wird bei dieser Ausführung patch
ein Fehler angezeigt. Wenn der einzige „Fehler“ das Ignorieren von Hunks ist, wird das Programm mit Code 1 beendet (mindestens ein Hunk ist fehlgeschlagen oder es gab Zusammenführungskonflikte); schwerwiegendere Fehler werden durch Exit-Code 2 angezeigt.
¹ Patches oder Hunks ohne Kontext oder bei denen hinzugefügte Zeilen dem Kontext entsprechen (z.Bein Patch, der eine polymorphe Funktion hinzufügt, bei der die ersten paar Zeilen der Deklaration mit der nächsten Funktion übereinstimmen).