次のように
repos (リポジトリ) |-- project | |-- branches | |-- tags | |-- trunk | `-- vendor | ~
すべてのプロジェクトを1つのリポジトリでまかなっていたのを
repos (ディレクトリ) |-- project (リポジトリ) | |-- branches | |-- tags | |-- trunk | `-- vendor | ~
という風に、1プロジェクト1リポジトリに変更。
これまでの経験から、こちらのほうがリポジトリのサイズの増加を抑えられるし(本質的な問題ではないにせよ) 他のプロジェクトに対する変更でリビジョン番号があがる事が無くなるのでよいかなと。 外部定義を使えばリポジトリをまたがって使うのも 問題ないみたい。
作業は簡単で、
$ svnadmin dump repos | svndumpfilter include project | sed -e 's/^Node-path: project\//Node-path: /g' \ -e 's/^Node-copyfrom-path: project\//Node-copyfrom-path: /g' > project.dump
としてから、ダンプファイルの最初の方にある
Node-path: project Node-action: add Node-kind: dir Content-length: 0
を消すとそれが元のリポジトリからprojectだけを抽出したものになるのでこれをsvnadmin loadするだけ。
リポジトリの移行が済んだらワーキングコピー側も(同一URLではあるけど一応)変更を反映。
$ svn switch file:///repos/project/trunk