SVNリポジトリの統合
プログラミング
歴史的経緯からSVNリポジトリそのものが分かれてしまっているものを統合したいことが希にあります。
ここでは、分散してしまっているSVNリポジトリをTracやJenkinsから参照しやすいように(できるだけ)履歴付きで統合する方法を書きます。(主にメモとして)
####1.旧リポジトリのダンプ
dumpコマンドで旧リポジトリを履歴付きでファイルに書き出します。
svnadmin dump <旧repositoryパス> > repo_dump
####2.インポートフォルダの作成
旧リポジトリ用のフォルダを作成します。 既に存在している場合は飛ばして構いません。
ここではold_repositoriesというフォルダをroot直下に配置していますが、状況に応じて扱いやすい場所に配置して構いません。
svn mkdir -m "old repositories." <新repositoryパス>/old_repositories <新repositoryパス>/old_repositories
ダンプしたリポジトリを読み込むフォルダを作成します。
svn mkdir -m "create old repo directory." <新repositoryパス>/old_repositories <新repositoryパス>/old_repositories/repo
####3.ダンプファイルのロード
ダンプしたファイルを以下のコマンドでロードします。
ロード先のフォルダが存在しないと失敗します。 また、svn mkdirとはパスの指定の仕方が違うので注意して下さい。
svnadmin load <repositoryパス> --parent-dir old_repositories/repo < repo_dump
以上の操作を統合したいフォルダの数だけ実施します。
####4.ロード後の整形
上記の作業が終われば、old_repositories以下にフォルダ別に旧リポジトリがロードされているはずです。
TortoiseSVN等から履歴がきちんと見られるか確認してみて下さい。
無事統合出来ていたら各リポジトリから必要なフォルダやツリーをtrunk,tags,branchesにコピーしてリポジトリの整形を行います。
この際に移動しても履歴は残りますが、後で思い出した際にtags等を過去のリビジョンから作成することができなくなります。
コピーしても履歴は追跡できますので特に理由がなければ移動ではなくコピーを使って整形して下さい。