miso_soup3 Blog

主に ASP.NET 関連について書いています。

いつか役に立つ パッチの作成と適用について (Subversion + TortoiseSVN)

Subversion のクライアントである TortoiseSVN を使ったパッチの作成と適用について書きます。

パッチとは

パッチの作成とは、リビジョン間の差分情報をファイルに出力することで、
パッチの適用とは、その作成したファイルを使い、差分をとあるソースに反映させることです。

どんなときに使うか

変更を反映してほしい(したい)ときに使います。特に、自分のリポジトリとは関係のない環境―オープンソースと利用者、などに対して有効です。
あとは、1つの修正を複数の環境に適用させたいときなど。

マージと違うところは、たとえ変更履歴がないソースの差分であっても、確認しながら安全に適用できるという点があります。

※パッチの作成場所と適用場所は、同じディレクトリ構造である必要があります。

パッチの作成

例として下のファイルの差分のパッチを作成してみます。
memo.text の リビジョン 2 と、リビジョン 3 の差分のパッチを作成します。

memo.text (リビジョン 2)

aiueo

memo.text (リビジョン 3)

ai ni ueta yoshio
kakikukeko

リポジトリーブラウザ、または作業フォルダからログを表示し、差分情報を取得したいリビジョン 2 つを選択して、右クリックより「Unified 形式で差分を表示」を選択します。

f:id:miso_soup3:20131012021340p:plain

差分ファイルが表示されるので、これを適当な名前を付けて保存します。
左上の「File」より保存できます。
(文字化けを起こしている場合は、後述の文字化けを参照)

f:id:miso_soup3:20131012021441p:plain

※この後のパッチの適用の作業に注意することとして、適用先のファイルのパスは、このパッチファイルの2-3行目あたりに書いてあるパスと同じにする必要があります。違う場合、メッセージの無い変なアラートがでます。一時的にフォルダパスを変える等して合わせます。

パッチの作成は以上です。

パッチの適用

下の memo.txt に、先ほど作成したパッチを適用します。

aiueo
sashisuseso

適用したいファイルの場所にて、右クリック>パッチの適用 を選択します。

f:id:miso_soup3:20131012021945p:plain

そうすると、下のような作業ウィンドウが開きます。

f:id:miso_soup3:20131012021827p:plain

右のウィンドウの左には、パッチを適用する前、右には、パッチを適用した場合の内容が表示されます。
左のウィンドウには、パッチを適用するファイル一覧が表示され、連続して適用・修正することができます。
また、パッチの適用だけでなく直接入力することで編集も可能です。

以上で、パッチの適用は完了です。保存後、必要に応じてコミットを行います。

文字化けについて

日本語の TortoiseSVN を利用している際、パッチ作成において文字化けが起こる場合がある模様。
以下のサイトを参考にして修正します。(それでも解決しない場合があるそう。)


Subversion のパッチコマンドについてはこちらを参考
subversionで差分を作る。パッチをあてる。

10/16 追記

差分ビューアーは、デフォルトの TortoiseUDiff が見やすい。(文字化けもしていない?)