Subversion 関連

ブランチを trunk へ再統合する

ブランチで長く開発しているうちに trunk がどんどん変更されて、ブランチを trunk へ再統合するときには既に手に負えないくらいの競合が発生する場合があります。 それを防ぐためにも、 trunk の内容を頻繁にブランチへマージするのはベストプラクティスと言われています。

trunk の内容を何度同じブランチへマージしても、 Subversion は trunk のどの変更をブランチへコピーしたかを慎重に管理し、同じ変更を何度もコピーすることが無いようにしてくれます。 このおかげで何度 trunk をブランチへマージしても競合が発生しません。

そのようにして開発したブランチを trunk へ再統合する際、普通にマージすると trunk からブランチへコピーされた変更が再度 trunk へコピーされようとし、大量の競合が発生します。 ブランチを trunk へ再統合するには、svn merge コマンドに「--reintegrate」オプションを付けます。

svn merge --reintegrate http://hoge/repos/branches/foo-branch

これを Eclipse Subversive でやるには、マージ画面で「Reintegrate」タブを選んで作業します。 http://www.eclipse.org/subversive/documentation/teamSupport/merge_dialog.php の一番下のあたりの画像がよく分かります。

Reintegrateモードでマージすると、 trunk からブランチへコピーされた変更は trunk へコピーされないようになります。めでたしめでたし。