リポジトリのツリーを別のリポジトリに移す方法
以下の段階を踏めばOK。
- ダンプ
- フィルター
- 移動先のフォルダを用意する
- ロード
- フォルダ移動
エクスプローラで自由自在に移動、というわけにはいかない。必要な部分を選んで、移動先とファイルがごちゃごちゃにならないように移して、最後にフォルダを整える、といった感じか。
詳細は以下に。
その2 フィルター
リポジトリの一部のフォルダのみを移動したければ、フィルターをかけます。
svndumpfilter include /trunk/app --drop-empty-revs --renumber-revs > app.dump(2011/04/21修正) svndumpfilter include /trunk/app --drop-empty-revs --renumber-revs > app.dump < repos.dump
--drop-empty-revs はフィルタをかけたために空になったリビジョンを取り除く。
--renumber-revs はフィルタをかけた後に残ったリビジョンに番号をふりなおす。
意味のないリビジョンを作らないためにも、このオプションはつけた方がよい。
その3 移動先のフォルダを用意する
移動先のリポジトリを用意し、ダンプを読み込んでもエラーが出ない様に必要なフォルダを作成する。
上記の例ではreposリポジトリの/trunk/app以下のフォルダを移動しようとしている。
そのために、svndumpfilterでフィルターをかけたのだが、その時点でダンプから/trunkフォルダを作成した情報が失われているため、移動先のリポジトリに/trunkが無ければ作成しておく。
その4 ロード
ダンプした結果を読み込みます。
svnadmin load newrepos < app.dump
ロードするフォルダを指定したいときは、--parent-dir を使用すればよい。
上記の例では、
svnadmin load newrepos --parent-dir newdir < app.dump
newreposリポジトリのnewdirの下にtrunk/appが作られる(newdir/trunkが無いなら作っておく必要あり)。
その5 フォルダ移動
ロードまでの段階では、移動したいフォルダを自由自在に動かすことはできないので、必要ならこの段階で動かす。