Subversion で管理しているリポジトリを、2つに分割した時の作業メモです。
2つに分けた理由は、アクセスできるユーザを分けたかったため。それぞれのパスに制限をかけるのに手間が掛かりそうなので、いっそ2つに分けることにしました。
元リポジトリのダンプを作成
まず、元リポジトリのダンプファイルを作ります。
# svnadmin dump /var/lib/svn/[元リポジトリ名] > /tmp/dumpfile
このファイルには全ファイルの全リビジョンの情報が書かれます(なので、それなりの時間とサイズになります)。
ちなみに、このファイルがあれば、元リポジトリを復元できるので、バックアップとしても使えます。
不要なファイルの情報を取り除く
# cat /tmp/dumpfile | svndumpfilter exclude [取り除きたいパス] (複数指定可) > /tmp/dumpfile1
「取り除きたいパス」とは、新しく作成するリポジトリには入れたくないファイルのパスのことです。リポジトリのルートフォルダからの相対パスで指定します。
逆に、
# cat /tmp/dumpfile | svndumpfilter include [入れたいパス] (複数指定可) > /tmp/dumpfile2
とすれば、「入れたいパス」のファイルだけが、リポジトリに入ります。
つまり、上記2つのコマンドで、元リポジトリの中身が dumpfile1 と dumpfile2 に分けられたことになります。
新しいリポジトリを作成
普通に作成して、ディレクトリの所有者を apache にします。
# svnadmin create /var/lib/svn/[新リポジトリ名] # chown -R apache:apache /var/lib/svn/[新リポジトリ名]
ダンプから新リポジトリへ
最後に、不要ファイルを取り除いたダンプファイルから、新リポジトリへインポートします。
# svnadmin load /var/lib/svn/[新リポジトリ名] < /tmp/dumpfile1