この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
rick No34です。
いまさらですが、svnリポジトリ移動の手順を記載します。
環境
サーバA(svnが有るサーバ)
サーバB(svnを移行するサーバ)
サーバC(サーバBのレプリサーバ)
手順
・Aサーバ
バックアップ
svnadmin dump リポジトリロケーション > バックアップ名
例:
svnadmin dump /var/lib/svn/hoge > hoge.dump
hoge.dumpをサーバBへscp等で送信
・Bサーバ
svnディレクトリ作成
mkdir /var/lib/svn
svnリポジトリ用ディレクトリ作成
mkdir /var/lib/svn/hoge
ディレクトリ権限変更
chown -R apache:apache /var/lib/svn/hoge
daemonだったりもする
バックアップ移動
mv ./hoge.dump /var/lib/svn
svnリポジトリ作成
svnadmin create /var/lib/svn/hoge/
リストア
svnadmin load /home/svn/hoge/ < hoge.dump
単一サーバの場合は、これで終了
・Cサーバ
svnディレクトリ作成
(Bサーバ同様省略)
svnリポジトリ用ディレクトリ作成
(Bサーバ同様省略)
ディレクトリ権限変更
(Bサーバ同様省略)
SVNリポジトリ作成
(Bサーバ同様省略)
設定ファイル作成
cd /var/lib/svn/hoge/hook
vi pre-revprop-change
—
#!/bin/sh
exit 0
—
vi pre-revprop-change.bat
—
exit 0
—
初期化
svnsync init svn+ssh://バックアップ先//var/lib/svn/hoge svn+ssh://バックアップ元//var/lib/svn/hoge
※ssh接続先ポートが変更されている場合
vi ~/.subversion/config
—
[tunnels]
ssh_hoge = ssh -p 8888
—
これでsvn+sshをsvn+ssh_hogeに変える
権限変更
chmod +x /var/lib/svn/hoge/hooks/pre-revprop-change
同期
svnsync sync svn+ssh://バックアップ先//var/lib/svn/hoge
バッチ設定
同期のコマンドをバッチで設定、もちろんパスワードレスの状態にしておく
終了
その他
・差分だけダンプ
svnadmin dump /var/lib/svn/hoge -r 12039:12040 –incremental > hoge.dump
・差分リストア
svnadmin load /var/lib/svn/hoge/ < hoge.dump
・リビジョン確認方法
/usr/bin/svnlook youngest /var/lib/svn/hoge
・リビジョン強制戻し
cd /var/lib/svn/hoge/db
rm /revs/x/消したいリビジョン
vi current # 直したリビジョンに書き直す
echo > rep-cache.db # キャッシュ削除
rm revprops/x/
注意点
現リビジョンが100で、後から90~91の差分リストをした場合
リビジョンの90~91が更新されるわけではなく、101,102として更新される。