Subversion 1.5 以降では、Merge Tracking 機能により、マージが楽になった。
フィーチャーブランチの典型的なマージ手順をメモしておく。
※以下の例で使用している、作業コピーのリポジトリーのルートディレクトリーのURLを表すキャレット (^) 記法は、Subversion 1.6 以降で可能です。
ブランチ作成
$ cd <いずれかの作業コピーのパス> # キャレット記法を使うために作業コピーに移動。フルでURL指定するなら不要。
$ svn cp ^/trunk ^/branches/br1
ブランチとtrunkの差分表示
$ cd <いずれかの作業コピーのパス> # キャレット記法を使うために作業コピーに移動。フルでURL指定するなら不要。
$ svn diff ^/trunk ^/branches/br1
trunkの最新をブランチにマージ
branchでの作業期間中、これを定期的に行う。
$ cd <ブランチの作業コピーのパス>
$ svn up # 作業コピーを最新にしておく
$ svn st # 作業コピーがクリーンであることを確認しておく
$ svn merge ^/trunk # ブランチの作業コピーにtrunkの最新をマージ
$ svn commit
ブランチをtrunkにマージ
branchでの修正が完了したら、最後にbranchをtrunkにマージする。
--reintegrate オプションが必要。
$ cd <trunkの作業コピーのパス>
$ svn up # 作業コピーを最新にしておく
$ svn merge --reintegrate ^/branches/br1
$ svn commit
いったん --reintegrate でマージされたブランチはもう使えない。
いったん削除する必要がある。
$ svn delete ^/branches/br1
ブランチでの作業を再開したい場合は、一度削除してから、ブランチを再作成する。
$ svn cp ^/trunk ^/branches/br1
削除したブランチのログを見たい
ブランチを削除しても、全てのリビジョンは残っているので、レポジトリのルートURLやブランチのルートURLなどに対して svn log すればよい。
$ cd <いずれかの作業コピーのパス> # キャレット記法を使うために作業コピーに移動。フルでURL指定するなら不要。
$ svn log ^/
$ svn log ^/branches
Basic Merging