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