
Puede patch
invocarse con idempotencia; es decir, ¿existe alguna combinación de opciones que hará que las invocaciones repetidas de patch
tengan el mismo efecto que una única invocación de patch
(para una diferenciación no vacía)?
Respuesta1
Algunos parches¹ se pueden aplicar varias veces, por lo que no se puede garantizar; pero
patch -N -r- -i your.patch
se aplicará your.patch
, ignorando cualquier fragmento que ya se haya aplicado.
-N
evita intentar revertir un parche ya aplicado y -r-
omite guardar fragmentos fallidos en .rej
archivos.
El comando equivalente con opciones largas es
patch --forward --reject-file=- --input=your.patch
Cuando se ejecuta de esta manera, si patch
se ignoran los fragmentos, indicará un error. Si el único "error" es ignorar los fragmentos, saldrá con el código 1 (al menos un fragmento falló o hubo conflictos de fusión); Los errores más graves se indican con el código de salida 2.
¹ Parches o fragmentos sin contexto, o donde las líneas agregadas coinciden con el contexto (p.ejun parche que agrega una función polimórfica donde las primeras líneas de la declaración coinciden con la siguiente función).