このページの内容

10 patchによるマージ

patchはdiffが生成した比較出力を受け取り、その差分を元ファイルのコピーに適用して、パッチ適用済みの版を作ります。patchを使えば、ファイル一式を丸ごと配布する代わりに変更だけを配布できます。受け取った人はpatchで変更を適用し、自分のファイルのコピーを更新できます。patchは diff の形式を自動判定し、前後のヘッダーを読み飛ばし、ヘッダーからパッチの適用対象を判断します。このため、差分を含むメールをそのままpatchに渡せます。

patchは、順方向のパッチなどのよくある問題を検出して警告し、適用できなかったパッチを保存します。また、patchlevel.hファイルを管理して、受け取った人が差分を正しい順序で適用するようにできます。

patchは標準入力から一連の差分を受け取ります。通常、各差分は適用対象を指定するヘッダーで区切られています。diffのハンク(ハンク参照)を一つずつ適用します。ハンクが元ファイルと完全には一致しない場合、patchはヒューリスティックを使って可能な限り適用を試みます。近似一致も見つからなければ、patchはそのハンクを拒否して次へ進みます。通常、patchは各ファイルfを新版で置き換え、拒否したハンクがあれば ‘f.rej’ に保存します。

patchのオプションの詳細は、patchの起動を参照してください。