*.origおよび*.rejファイルを生成せずに「パッチ」を実行する

*.origおよび*.rejファイルを生成せずに「パッチ」を実行する

ファイルをpatch生成しないように言うことはできますか?私はこれを非常に迷惑にするパッチを見つけました。.orig.rej

答え1

patch他のオプションを指定しないと、-pNパッチを完全に適用できない場合にのみこれらのファイルが生成されます。

したがって、1つのオプションは、誤ったパッチの作成(または受け入れ)を停止することです。 :)

現実の世界に戻ると、これが特徴です。パッチセグメントをソースファイルに適用できない場合は、ソースファイルのpatch(1)一時コピーを保持し、*.orig拒否されたセグメントをにダンプしてから、*.rejパッチセグメントの適用を続行します。アイデアは、*.rejいくつかのフラグメントをパッチ付きファイルにコピーしてファイルを開き、パッチプロセスを手動で進めることができるということです。*.origこのファイルは、パッチ処理中に誤って何かが中断されたため、元のバージョンを参照する必要がある場合にも役立ちます。

*.rejバグパッチを修正するために常にファイルにテキストを使用するわけではありませんが*.orig、必要に応じて持っているとよいでしょう。

無効なパッチが修正された場合は、クイッククリーンアップのためにプロジェクトルートで次のスクリプトを実行します。

#!/bin/bash
find . '(' \
    -name \*-baseline -o \
    -name \*-merge -o \
    -name \*-original -o \
    -name \*.orig -o \
    -name \*.rej \
')' -delete

cleanup-after-bad-patch名前が長いと、誤って実行され、必要なファイルが削除されるのが部分的に防止されるため、そう呼びます。しかし、正直なところ、私は通常を入力して実行しますが、これは私の開発コンピュータでこのスクリプトを見つけるのにcleanTabEnter十分です。PATH

追加モードが適用可能であることを確認してください。私が選んだバージョン管理システムマージ操作中に同じ問題が発生した場合。状況に合わせて調整することもできます。VCS/マイクロコントローラツール。

答え2

この--no-backup-if-mismatchオプションは「.orig」ファイルを防ぎます。

--mergeファイル内の競合を引き起こすこのオプションを試すこともできます。

いずれにしても、マージが難しくなった場合は、すばやく良い状態に戻す方法が必要です。

答え3

パッチがバックアップを作成しないようにするには、-bオプション--backup-...を省略します。

.rejファイルを生成しないように指示するには、-r -コマンドにオプションを追加します。

答え4

私が考えることができる最良の方法(ラグの下のほこりを掃除する方法であることは認めます)は、-r <tmpfile>次のように使用することです。

# patch -r /tmp/deleteme.rej -i patchfile filetobepatched

v2.5.8以降、-r -このファイルは実際に作成されます-

関連情報