Backlogのリポジトリを別サーバへ移行したメモ。

ちょっと前に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 する必要がある。

Terminal
1
2
3
$ cd ~/
$ mkdir tmprepos
$ svnadmin create tmprepos

pre-revprop-changeをhookテンプレートからコピーし実行権限つける。

Terminal
1
2
$ cp tmprepos/hooks/pre-revprop-change.tmpl tmprepos/hooks/pre-revprop-change
$ chmod +x tmprepos/hooks/pre-revprop-change

svnsync を利用してBacklogのSubversionリポジトリのバックアップを行うわけだが、先ほどコピーした pre-revprop-chage を、そのまんま利用するととエラー発生する。

Terminal
1
2
svnsync init file:///Users/nanigashi/tmprepos [BacklogのリポジトリURL]
svnsync: E165001: Revprop change blocked by pre-revprop-change hook (exit code 255) with no output.

以下の方法で解決する。

tmprepos/hooks/pre-revprop-change
1
2
#exit 1     #=> 1 を 0 に変更する
exit 0

再度 svnsync で対象リポジトリを設定する。

Terminal
1
$ svnsync init file:///Users/nanigashi/tmprepos [BacklogのリポジトリURL]

同期開始。

Terminal
1
$ svnsync sync file:///Users/nanigashi/tmprepos

同期が完了するとBacklogのリポジトリと全く一緒になるので、コピーしたリポジトリから dump する。

Terminal
1
$ svnadmin dump tmprepos > tmprepos_dump

dump したファイルを圧縮して移行サーバにアップロードする。

Terminal
1
2
$ tar zcvf tmprepos_dump.tar.gz tmprepos_dump
$ scp tmprepos_dump.tar.gz hoge@xxx.xxx.xxx.xxx:~/

移行先リポジトリにリストアする

移行するリポジトリを作成する。

Terminal
1
2
# mkdir repos
# svnadmin create repos

一時リポジトリから送られてきたファイルを解凍する。

Terminal
1
# tar xvzf tmprepos_dump.tar.gz

解凍したファイルを読み込む。

Terminal
1
# svnadmin load repos < ~/tmprepos_dump

リポジトリの参照先を変更する

チェックアウトしたディレクトリで以下のコマンドを実行する

Terminal
1
$ svn switch --relocate --username [ユーザID] --password [パスワード] [古いURL] [新しいURL]

これでログから何からBacklogと同じになる。

以上です。

© 2024 磁力式駆動 All Rights Reserved.
Theme by hiero