
Может patch
быть вызван с идемпотентностью; т. е. существует ли некая комбинация опций, которая приведет к тому, что повторные вызовы будут patch
иметь тот же эффект, что и одиночный вызов patch
(для непустого diff)?
решение1
Некоторые исправления¹ можно применять несколько раз, поэтому это не может быть гарантировано; но
patch -N -r- -i your.patch
будет применен your.patch
, игнорируя любые уже примененные фрагменты.
-N
позволяет избежать попыток отменить уже примененный патч и -r-
пропускает сохранение неудачных фрагментов в .rej
файлы.
Эквивалентная команда с длинными параметрами:
patch --forward --reject-file=- --input=your.patch
При запуске таким образом, если patch
игнорируются куски, это будет означать сбой. Если единственной «ошибкой» являются проигнорированные куски, это завершится с кодом 1 (по крайней мере один кусок не удался или были конфликты слияния); более серьезные ошибки обозначаются кодом выхода 2.
¹ Патчи или фрагменты без контекста или в которых добавленные строки соответствуют контексту (напримерпатч, добавляющий полиморфную функцию, где первые несколько строк объявления соответствуют следующей функции).