はじめに
TortoiseSVNを使っていて、絆創膏のマーク(青とか緑の )が気になったので、これがなんなのかを調べたメモです。
※表記は英語版です。参考文献[1]に日本語版での説明があります。
パッチとは
パッチとは、端的に言うと差分(diff)のファイルです。以下に示す方法で生成したパッチは、その差分を別のブランチや他の人のワーキングコピーにマージするのに使うことができます(これは「パッチの適用」と表現されます)。
パッチはその目的で2種類に分けることができます[2]。
(1) 未コミットの差分を示すパッチ
- まだコミットしたくない変更を、誰かに見てほしいとき
(2) リビジョン間の差分を示すパッチ
- コミット権がなく、コミットまたはマージを誰かに依頼したいとき
次節で具体的な生成の方法を説明します。
パッチの生成
パッチは .diff または .patch という拡張子で保存します。
(1)未コミットの差分を示すパッチを生成
- 赤いアイコンが表示されているフォルダの上で[TortoiseSVN] > [Create Patch...]
- 小窓に差分のあるファイルが表示されているのを確認してOK
- パッチの名前を指定して保存
(2) リビジョン間の差分を示すパッチを生成
- フォルダの上で[TortoiseSVN] > [Show log]
- 差分を取りたいリビジョン範囲をCtrlで選んで右クリック
- [Show differences as unified diff] を選択
- 差分が表示されるので、メニューの [File] > [Save as...] で保存
パッチの適用
- パッチを作った時と同じ構造のフォルダの上で [TortoiseSVN] > [Apply patch...]
- 生成したパッチを選択
- 小窓のファイルをダブルクリックして差分を確認した後、下のボタンで実行
- (そのままマージしたい場合)パッチの当たったファイルはアイコンが赤になっているので、これをコミットする
感想
ファイルを丸ごと送って差分を見てもらうよりもパッチのファイル1つを送る方がコミュニケーションが円滑になりそうです。
参考文献
[1] いつか役に立つ パッチの作成と適用について (Subversion + TortoiseSVN)
[2] What are patches used for in SVN? (Stackoverflow)