2010年12月1日水曜日

SubversionリポジトリをProjectLockerからassemblaへ移行した

個人的に持ってるSubversionのリポジトリを、ProjectLockerからassemblaへ移行した。

昔assemblaにリポジトリ持っていたんだけど、プランが変更されてニーズに合わなくなったので、一旦ProjectLockerに移行してた。最近assemblaを見たら、SubversionかGitのリポジトリを無料で2GB持てるようになってたので、移行することにした。

ちなみに、当初はGitにしようと思ってたんだけど、assemblaのGitはWebDAVが使えなかったので、Subversionにした。WebDAVじゃないと、会社からつながらないからね。

動機

ProjectLockerのディスク容量は500MB、assemblaは2GB。容量がassemblaの方が大きいのが第一。あとは昔使ってた安心感。Tracは個人では使わないから、リポジトリの場所だけ提供してくれるassemblaが最適。

移行

ProjectLockerのリポジトリをsvnsyncでバックアップ

ProjectLockerは、リポジトリのバックアップ方法が3つあって、そのうち2つは有料オプション。1つだけ無料でできるのは、svnsyncを使うこと。これはサポート対象外。

そこで、初めてsvnsyncを使ってみることにした。環境はMac OS X 10.6.5

まずは、syncするバックアップ先リポジトリを作る。

% svnadmin create syncRepo

次に、作ったバックアップ先リポジトリのhookスクリプトを用意。

% vi sync/hooks/pre-revprop-change

内容は、

#!/bin/sh
exit 0

で、バックアップ先リポジトリをsvnsyncで初期化

% svnsync file:///file/to/syncRepo バックアップ元リポジトリ

※これは、ローカルにバックアップする場合。
※file:///の部分は、スラッシュが3つ必要

バックアップ元リポジトリの認証があるので、それも済ませると以下のメッセージが出る。

「リビジョン 0 の属性をコピーしました。」

ここまでで準備OK。リポジトリのsyncをする。

% svnsync sync file:///file/to/syncRepo

しばらくすると、syncが完了する。これで、ローカルにリポジトリと全く同じ変更履歴を持ったリポジトリができる。

svnsyncでバックアップしたリポジトリをdump

リポジトリのバックアップができたので、次はそのリポジトリをdump。assemblaは、gzかzip圧縮したdumpしか受け付けないので、以下のコマンドを発行。

% svnadmin dump syncRepo | gzip > syncRepo.gz

assemblaでインポート

assemblaのSubversionリポジトリのWebページを開いて、dumpしたファイルをインポート。無事インポートできれば、これまでの履歴を持ったリポジトリの移行完了。

初めてsvnsyncってものを知って使ってみたけど、これ便利。Subversionのリポジトリをホスティングしてたりすると、サーバに直接入って何かするのは難しい。でも、svnsyncを使えば、サーバ側で何ら操作することなくバックアップができるのは助かる。

0 コメント:

コメントを投稿