patchコマンド

patchコマンドの使い方を調べたのでメモ。

パッチ作成

diffコマンドを利用する。

オプションについて
-c 変更部分の前後関係も記録する (視覚的にもわかりやすくなる)
-r ディレクトリ以下を階層的に検索してくれます。
-N ディレクトリを比較する際、片方のディレクトリにのみファイルが存在していたらもう片方のディレクトリには同名の空っぽのファイルがあるように動作します。

ファイル単位のパッチを作成する場合

#diff -c [元ファイル名] [修正後ファイル名] > [パッチファイル]

ディレクトリ単位(サブディレクトリ含む)のパッチを作成場合

#diff -cr [元ファイル名] [修正後ファイル名] > [パッチファイル]

パッチ適用

ファイル単位のパッチを作成する場合

適用したいファイルの存在するディレクトリ上で以下のように実行

#patch < [パッチファイル]

ディレクトリ単位(サブディレクトリ含む)のパッチを作成場合

パッチを作成したときと相対的に同じディレクトリにて以下のように実行

#patch -p0 < [パッチファイル]

ディレクトリを指定してパッチを当てる場合、以下のように実行

#patch -p0 -d [パッチを当てる任意のディレクトリ] < [パッチファイル]

その他のオプション

当てたパッチを戻すには -R オプションを利用すればよい。

#patch -p0 -R < [パッチファイル]

    • dry-run オプションでパッチが適用されるファイルを確認できる

#patch -p0 --dry-run < [パッチファイル]