Как запретить патчу создавать резервные копии файлов?

Как запретить патчу создавать резервные копии файлов?

Я пишу код, который применит программу 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.

Связанный контент