![パッチがバックアップファイルを作成しないようにするにはどうすればよいですか?](https://rvso.com/image/1302215/%E3%83%91%E3%83%83%E3%83%81%E3%81%8C%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
私は patch(1) プログラムを適用するコードを書いていますが、バックアップ ファイルの作成を完全に防止したいと考えています。つまり、foo.orig
特定のファイルの更新に失敗した (この場合はファイルが作成されますfoo.rej
) 場合、またはファイルの更新は成功したもののあいまいさが伴う場合 (通常はどちらも実行されます) にファイルを作成しないようにしたいのです。これは言うほど簡単ではないようです。
基本ケース: Debian ソース ディレクトリに対して「patch」を実行すると、debian/changelog
ファイルの更新に失敗します。patch はファイルdebian/changelog.orig
file を作成します (これを回避しようとしています)。
ドキュメントには--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
。そのオプションはFreeBSD版のドキュメントpatch
。