パッチのあて方の復習

この記事は公開されてから3年経過しています。現在とは内容が異なる場合がありますのでご注意ください。
最新の記事や関連記事をお探しの方は下の「サイト内検索」で検索してみてください。
下記は FreeBSD のpatchコマンドの例でしたので、Linux系の patch コマンドの例も追記しました。
2021-03-19

バージョン管理システムをつかって管理しているプロジェクトでもビルド先の環境はクローズドなものでバージョン管理システムのリポジトリに接続できないという事があります。そういう時に機能修正とかあった場合に変更点を反映するときに手作業で1つ1つ変更点を反映していくのは大変です。とくに反映漏れとかあってシステムが不安定になったら大変ですよね。

というわけでそんな時はパッチを作って対応するのがいいんじゃないかと思います。
今回はバージョン管理システムに Subversion を使っているのを前提にパッチの作り方とパッチのあて方の復習です。

パッチの作り方については diff コマンドで2つのツリーを比較して作成するのもいいですが、svn を使っているなら svn コマンドでらくらく作成出来ます。

ってな感じです。
リポジトリURLと変更前リビジョンは適時読み替えて下さい。
変更前リビジョン はシステム側で稼働中のリビジョンですね。
こうすると最新のリビジョン(HEAD)までの変更箇所を unified 形式のパッチとして出力してくれます。

あとはこのパッチファイルをシステム側にコピーして patch コマンドで反映します。

としてパッチファイルの内容が問題ないか確認します。
-C (–dry-run)のオプションをつけると処理内容を表示しますが、実際にはパッチを当てていません。
それで問題が無さそうなら -C (–dry-run)オプションを外していよいよパッチを当てます。

これでパッチ当てが終了です。
ちなみに大きな前提条件を忘れていました。
システム側で個別修正をしていないこと
です。