「パッチ」が最後にチルダを含むバックアップファイルを作成するのを防ぐ方法は?

「パッチ」が最後にチルダを含むバックアップファイルを作成するのを防ぐ方法は?

私は次のようdiffに実行していますpatch

diff --unified --ignore-space-change old.txt new.txt > changed.patch
patch --version-control=none third.txt changed.patch

ファイルが生成されるのを--version-control=none防ぐ必要があります(はい)。patchthird.txt.orig

ただし、third.txt.~1~反対という名前のファイルが生成されます。

すべての友達が成功し、SIMPLE_BACKUP_SUFFIX環境変数は空でした。

この--posixオプションはthird.origファイルを生成します。

third.rej問題が発生した場合、ファイルが生成されても問題ありません。

私はGNUパッチ2.7.6でGit Bashを使用しています。

答え1

略語:使用--no-backup-if-mismatch:

通常、修理するパッチが元の入力ファイルと正確に一致しない場合は、バックアップファイルを作成します。この場合、「」を使用してパッチを元に戻すと、元のデータを回復できない可能性があります。patch -R'(リバースパッチの適用を参照).ただし、POSIXと互換性がある場合、パッチはデフォルトでバックアップファイルを生成しません。パッチを参照してPOSIX規格

これ--backup(-b) オプションを使用すると、パッチが元の入力と一致するかどうかに関係なく、パッチはバックアップファイルを生成します。これ--backup-if-mismatchオプションを使用すると、パッチが一致しないファイルのバックアップファイルを作成します。これは、POSIX と互換性がない場合のデフォルトです。これ--no-backup-if-mismatchオプションを使用すると、パッチが一致しなくてもパッチはバックアップファイルを生成しません。これは、POSIX と互換性がある場合のデフォルトです。

(「適合性」には少し説明が必要ですが、The Open Groupの基本仕様2018年7号では明確ではありません。)

関連情報