
Pode patch
ser invocado com idempotência; ou seja, existe alguma combinação de opções que fará com que invocações repetidas de patch
tenham o mesmo efeito que uma única invocação de patch
(para uma diferença não vazia)?
Responder1
Alguns patches¹ podem ser aplicados diversas vezes, então isso não pode ser garantido; mas
patch -N -r- -i your.patch
aplicará your.patch
, ignorando quaisquer pedaços que já tenham sido aplicados.
-N
evita tentar reverter um patch já aplicado e -r-
ignora o salvamento de pedaços com falha em .rej
arquivos.
O comando equivalente com opções longas é
patch --forward --reject-file=- --input=your.patch
Quando executado desta forma, se patch
ignorar pedaços, indicará falha. Se o único “erro” for blocos ignorados, ele sairá com o código 1 (pelo menos um pedaço falhou ou houve conflitos de mesclagem); erros mais graves são indicados pelo código de saída 2.
¹ Patches ou pedaços sem contexto ou onde as linhas adicionadas correspondem ao contexto (por exemploum patch adicionando uma função polimórfica onde as primeiras linhas da declaração correspondem à próxima função).