Backlogの容量制限が迫ってきた。その容量の大半を喰っているレポジトリのデータを退避させようとしたところから。
自前でレポジトリをdumpする方法です。
dumpは通常svnadminで行う。先ずは、それで試す
svnadmin dump https://☓☓☓☓.backlog.jp/svn/☓☓☓ > repodump
すると
svnadmin: ' https://☓☓☓☓.backlog.jp/svn/☓☓☓ ' is an URL when it should be a path
で、出来ませーん。要するに対象のレポジトリがURLだと無理らしい。
ここから本題。
この問題を解決する方法は、svnsync。 svnsyncはリモートレポジトリとローカルレポジトリを同期させる事が出来るんです。
なので、ここで説明する方法は空のレポジトリをローカルに作り、それをリモートレポジトリと同期させて最終的にそのローカルレポジトリをdumpするというもの。
1. ローカルレポジトリを作成する
以下のコマンドで適当な場所にレポジトリを作成します。(場所は適当に)
svnadmin create /Library/Webserver/Documents/repository
2. pre-revprop-changeをhookディレクトリに作成する
cd /Library/Webserver/Documents/repository/hooks
でhooksディレクトリに移動して
cp pre-revprop-change.tmpl pre-revprop-change
pre-revprop-changeをテンプレートからコピーして作成する
chmod x pre-revprop-change
最後に実行権限を与えてあげてください。これが無いと出来ない。
これで、準備はOKなはずなんですが何故か上手く行かなかったので この記事を参考に 作成したpre-revprop-changeに
exit 0; を一行追加。
3. ローカルレポジトリとリモートレポジトリの同期
svnsync init file://localhost/Library/WebServer/Documents/☓☓☓/repository/ https://☓☓☓☓.backlog.jp/svn/
svnsync sync file://localhost/Library/WebServer/Documents/☓☓☓/repository/
4. 最後に、同期が完了したら普通にローカルレポジトリをdumpする
svnadmin dump /Library/WebServer/Documents/☓☓☓/repository/ > /Library/WebServer/Documents/repodump で、完了!これで、Backlogとかのリモートレポジトリは、完全にローカルのrepodumpに格納されます。
思ったよりも簡単に終わり。これで、Backlogの容量を逼迫しやすいレポジトリのバックアップが完了。
誰かに、勝手にプロジェクト消されても最悪レポジトリはローカルで復活できる。