gitosisからgitoliteへの移行
git サーバーを gitosis から gitolite へ移行する際の作業メモです。
基本的には、gitolite サーバーを構築して、リポジトリを rsync で移行すればよいのですが、若干ファイル構成が異なるので rsync 時に注意が必要です。
環境
- gitosis: 0.2
- gitolite: 3.04
移行手順の流れ
データ移行(rsync)時の注意点
単純に gitosis から gitolite へ rsync すると、xxxxx.git/gl-conf と xxxxx.git/hooks/update が削除されてしまい、gitolite 側でリポジトリへアクセスできなくなります。
FATAL: split conf set, gl-conf not present for '%repo-name%' fatal: The remote end hung up unexpectedly
なので、rsync 時は以下のように exclude オプションを指定します。
gitolite-admin も削除されてしまうので、exclude に指定します。
$ rsync -azrv --delete --exclude "gitolite-admin.git" --exclude "*/gl-conf" --exclude "*/hooks/update" -e ssh /var/lib/gitosis/repositories/ gitolite-server:/var/lib/gitolite3/repositories/
もし、gl-conf と hooks/update を削除してしまった場合は、以下のスクリプトを実行すると、再作成されます。
$ /var/lib/gitolite3/.gitolite/hooks/gitolite-admin/post-update
post-update を実行すると、/var/lib/gitolite3/.gitolite/conf/gitolite.conf-compiled.pm が更新されます。