とても残念ですが、世の中まだまだsvnしか使えない人たち・使えない環境があります。
そんな環境で快適にバージョン管理するために、gitlabを導入してgit svnに移行しようとした場合、「成果物はsvnで管理しなければならない」みたいな規則の中では、gitlabにpushしたからOKとはいきません。
あと、gitlabはあくまで試験導入という場合にも、何かの拍子にgitlabのデータが壊れてしまうととても困ります(もちろん、分散レポジトリなので手元が生き残っていればまだセーフですが)。
ということで、git(lab)に移行したいがいろいろな事情でSubversionにも成果物を残さなければならない場合に私がやっている方法を書いておきます。
環境は以下の通りです。
- Fedora 21
- Giblab CE 7.9.2 公式の手順にしたがってダウンロード&インストールします
- バックアップ先のsvnレポジトリを準備する
- レポジトリを取ってきます
cd ~ && svn co http://example.com/svn/trunk
- バックアップを保存するディレクトリを作ってコミットしておきます
cd trunk && mkdir gitlab-backup && svn add gitlab-backup
- レポジトリを取ってきます
- gitlabのバックアップを作成する(sudoが必要です)
-
gitlab-rake gitlab:backup:create
を実行すると、初期状態で/var/opt/gitlab/backups/
にxxxxxxxx_gitlab_backup.tarのようにgitlabのバックアップが作成されます - 最初に作ったディレクトリに展開します
tar xf /var/opt/gitlab/backups/*.tar
-
- svnに保存する
- 最初に作った保存先ディレクトリを空にしておきます
cd ~/trunk/gitlab-backup && rm -rf *
-
backup_information.yml
はgitlabが更新されていなくてもバックアップした時刻で変化してしまうので除いておきます(後で定期バックアップしたくなった場合に邪魔になるから)rm -f backup_information.yml
- 全ファイルを追加します
svn add *
- コミットします
svn commit -m "backup gitlab"
- 最初に作った保存先ディレクトリを空にしておきます
↑の1は最初に一度だけやっておけばよくて、2はsudoのcrontabに、3は通常ユーザーのcrontabで定期実行させれば、変更があった場合に定期的にsvnにバックアップ出来る環境が、とりあえず整います。
もっといい方法あれば教えて下さい。