ちょっと前にBacklogからSubversionのリポジトリを移行したメモがあったので残しておく。
環境
一時リポジトリ環境
- OS: Mac OS X 10.10.2
- Subversion: 1.7.17
移行先環境
- OS: CentOS 5.5
- Subversion: 1.6.11
一時的にデータを抜くリポジトリを作成する
要件としては、
- Backlogを解約するのでSubversionのリポジトリを別のサーバに構築して欲しい
- 修正履歴などをコメントに残してあるのでログを見れるようにして欲しい
単純にバックアップとって流せればいいところではあるが、Backlogのリポジトリに直接コマンドが打てるわけではないので、一旦ローカルなどにのリポジトリにコピーしたものを dump
する必要がある。
1 | $ cd ~/ |
pre-revprop-changeをhookテンプレートからコピーし実行権限つける。
1 | $ cp tmprepos/hooks/pre-revprop-change.tmpl tmprepos/hooks/pre-revprop-change |
svnsync
を利用してBacklogのSubversionリポジトリのバックアップを行うわけだが、先ほどコピーした pre-revprop-chage
を、そのまんま利用するととエラー発生する。
1 | svnsync init file:///Users/nanigashi/tmprepos [BacklogのリポジトリURL] |
以下の方法で解決する。
1 | #exit 1 #=> 1 を 0 に変更する |
再度 svnsync
で対象リポジトリを設定する。
1 | $ svnsync init file:///Users/nanigashi/tmprepos [BacklogのリポジトリURL] |
同期開始。
1 | $ svnsync sync file:///Users/nanigashi/tmprepos |
同期が完了するとBacklogのリポジトリと全く一緒になるので、コピーしたリポジトリから dump
する。
1 | $ svnadmin dump tmprepos > tmprepos_dump |
dump
したファイルを圧縮して移行サーバにアップロードする。
1 | $ tar zcvf tmprepos_dump.tar.gz tmprepos_dump |
移行先リポジトリにリストアする
移行するリポジトリを作成する。
1 | # mkdir repos |
一時リポジトリから送られてきたファイルを解凍する。
1 | # tar xvzf tmprepos_dump.tar.gz |
解凍したファイルを読み込む。
1 | # svnadmin load repos < ~/tmprepos_dump |
リポジトリの参照先を変更する
チェックアウトしたディレクトリで以下のコマンドを実行する
1 | $ svn switch --relocate --username [ユーザID] --password [パスワード] [古いURL] [新しいURL] |
これでログから何からBacklogと同じになる。
以上です。
実用 Subversion 第2版
posted with ヨメレバ
C. Michael Pilato,Ben Collins-Sussman,Brian W. Fitzpatrick オライリージャパン 2009-07-27