`patch` 可以是冪等的嗎?

`patch` 可以是冪等的嗎?

可以patch冪等地呼叫;即,是否存在某些選項組合會導致重複呼叫與單次呼叫(對於非空差異)patch具有相同的效果?patch

答案1

有些補丁可以多次應用,因此無法保證這一點;但

patch -N -r- -i your.patch

將申請your.patch,忽略任何已經申請的帥哥。

-N避免嘗試恢復已套用的補丁,並-r-跳過將失敗的區塊儲存到.rej檔案。

具有長選項的等效命令是

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

這樣運作的時候,如果patch忽略了帥哥,那就表示失敗了。如果唯一的「錯誤」被忽略了 hunk,它將以代碼 1 退出(至少有一個 hunk 失敗,或存在合併衝突);退出代碼 2 指示更嚴重的錯誤。


¹ 沒有上下文的補丁或區塊,或新增的行與上下文相符的地方(例如添加多態函數的補丁,其中聲明的前幾行與下一個函數匹配)。

相關內容