
Я пишу код, который применит программу patch(1), и я хочу полностью запретить ей создавать файлы резервных копий. То есть, я не хочу, чтобы она создавала foo.orig
файлы, когда она не может обновить определенный файл (в этом случае она создает файл foo.rej
), или когда она успешно обновляет файл, но есть некоторая неопределенность, и то и другое она обычно делает. Кажется, это легче сказать, чем сделать.
Базовый случай: я запускаю «patch» для исходного каталога Debian, и файл не обновляется debian/changelog
. patch создает файл file debian/changelog.orig
(чего я и пытаюсь избежать).
В документации упоминается --no-backup-if-mismatch
переключатель, который, похоже, как раз то, что мне нужно. Но когда я его добавляю, файл резервной копии все равно создается, только теперь он называется debian/changelog.~1~
.
В документации также говорится, что при --posix
наличии переключателя резервные копии не будут создаваться. Когда я использую этот переключатель вместо --no-backup-if-mismatch
, файл резервной копии все равно создается, но с исходным .orig
суффиксом.
Единственный найденный мной обходной путь — использовать переключатель, -B/--prefix
чтобы направлять резервные копии в каталог по моему выбору. Но это кажется уродливым хаком. Разве нет более чистого способа предотвратить резервное копирование?
решение1
Видимо, -B/--prefix
это единственный выход.
решение2
В соответствии с(diffutils)Резервные копии, --no-backup-if-mismatch
делает то, что вы хотите.
решение3
Рассмотрите возможность использования недокументированного --version-control none
варианта. Этот вариантдокументировано для варианта FreeBSDpatch
.