Kann „Patch“ idempotent sein?

Kann „Patch“ idempotent sein?

Kann patchmit Idempotenz aufgerufen werden; gibt es d. h., gibt es eine Kombination von Optionen, die dazu führt, dass wiederholte Aufrufe patchdenselben 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.

-Nvermeidet Versuche, einen bereits angewendeten Patch rückgängig zu machen, und -r-überspringt das Speichern fehlgeschlagener Hunks in .rejDateien.

Der entsprechende Befehl mit langen Optionen lautet

patch --forward --reject-file=- --input=your.patch

Wenn Hunks ignoriert werden, wird bei dieser Ausführung patchein 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).

verwandte Informationen