![Как запретить патчу создавать резервные копии файлов?](https://rvso.com/image/1302215/%D0%9A%D0%B0%D0%BA%20%D0%B7%D0%B0%D0%BF%D1%80%D0%B5%D1%82%D0%B8%D1%82%D1%8C%20%D0%BF%D0%B0%D1%82%D1%87%D1%83%20%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%B2%D0%B0%D1%82%D1%8C%20%D1%80%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%BF%D0%B8%D0%B8%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%3F.png)
Я пишу код, который применит программу 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
.