IDEA8のSVN merge-trackingサポートが良くできてる
Subversion1.5でmerge-trackingが追加されたのは有名な話。IntelliJもIDEA8から*1SVN1.5をサポートしてると知ってはいたが,merge-trackingもIntelliJのサポートもよく分かってなかった。
最近,merge-trackingを実際に使ってみる機会があったので,覚えているうちにメモっておく。
merge-tracking自体はTortoiseSVNでやった。これ簡単に言うと「あるブランチが,どのチェンジセットをマージしたかを覚えている」機能のこと。具体的にはsvn:mergeinfoプロパティに,マージしたチェンジセット番号を記録しているようだ。
#余談だけど,マージではカンマ(,)やハイフン(-)で複数のチェンジセットを指定できる。
で,IntelliJのほうはChangesツールウィンドウにそれっぽいアイコンがあって,それを押すとMerge Infoを表示するようになる。
最初このMerge Infoの見方がわからなかったんだけど,見方がわかるとすごく便利ね,これ。
今のプロジェクト(作業コピー)を基点(From)に,指定したブランチ(To)にどのチェンジセットがマージ済みかどうかを表示したり,指定したチェンジセットをマージしたりできる。
たとえば,
c:\work + branch-1\ + trunk\
のように2つの作業コピーがあって,branch-1をIntelliJで開いていたとすると勝手にtrunkをToに設定*2して,branch-1からtrunkに対するマージの状況を表示する。
例えば,先の図で言うと「チェンジセット#125, #126, #134は,branch-1からtrunkにマージ済み」と見る。
これがね,すごい便利なワケだ。チェンジセットごとにマージ済みかどうかがわかるんで,ついうっかりマージし忘れたとか一目瞭然。:-)
さらにMerge Info側のツールバーで,マージ実行したり,キャンセルしたりもできる。
各アイコンの機能はこんなん。
- Highlight Integrated
- チェンジセット一覧にマージ済みアイコンを表示する。
- Integrated To Branch
- 選択したチェンジセットをTo側にマージする。その後,コミットダイアログが出る。
- Undo Integrated To Branch
- 「選択したマージ済みチェンジセットをキャンセルする」んだと思う。怖くて押したことない。:-)
- Mark As Merged
- 選択したチェンジセットをマージしたことにする(svn:mergeinfoのみ設定する)。何のために使うのか,いまひとつ分かってない。
- Mark As Not Merged
- "Mark As Merged"の逆。
- Filter系は説明割愛
Subversionのmerge-trackingは確かに便利なんだけど,こうゆう風に可視化してくれるクライアントが無いと,ちょーっと及び腰になるわな。
つうわけで,TortoiseSVNもガンバって欲しい。;-)