svnsyncでリポジトリのミラーを作成する方法。
まずシンク(ミラー先)リポジトリを作成。 作成したら、必要に応じてconf/authz, conf/passwdなどを変えておく。
svnadmin create sync
続いて、リポジトリ内のhooksディレクトリにあるpre-revprop-change.tmplとstart-commit.tmplをコピー、編集してsvnsyncするユーザのみアクセスできるようにする。
cd sync/hooks
cp pre-revprop-change.tmpl pre-revprop-change
chmod u+x pre-revprop-change
cp start-commit.tmpl start-commit
chmod u+x start-commit
それぞれのファイルの内容は次のとおり。 svnはsvnsyncを実行するユーザ。
pre-revprop-change.sh
#!/bin/sh
USER="$3"
if [ "$USER" = "svn" ]; then
exit 0
else
exit 1
fi
start-commit.sh
#!/bin/sh
USER="$2"
if [ "$USER" = "svn" ]; then
exit 0
else
exit 1
fi
svnsync initでシンクリポジトリを初期化。
svnsync init file:///srv/sync/ file:///srv/repos/project/ リビジョン 0 の属性をコピーしました。
svnsyncを実行したとき、
svnsync: リポジトリが、リビジョン属性を変更できるようにはなっていません。 管理者に pre-revprop-change フックを作成するよう頼んでください
と表示される場合は、フックの設定に誤りがある。
初期化がうまくいったら、svnsync syncでリポジトリを同期する。
svnsync sync file:///srv/sync/ リビジョン 1 をコミットしました。 リビジョン 1 の属性をコピーしました。 リビジョン 2 をコミットしました。 リビジョン 2 の属性をコピーしました。 ファイルのデータを送信しています ..... リビジョン 3 をコミットしました。 リビジョン 3 の属性をコピーしました。 : :
あとは同期したいタイミングでsvnsync syncを繰り返す。