gitosisからgitoliteに移行(Ubuntu)

参考:
http://gitolite.com/gitolite/gsmigr.html


サーバをupgradeしたついでにgitosisは古いらしく無くなってしまったのでgitoliteに移行.
aptitudeで入れようとしたらバージョンが古いみたいなのでgitから入れる.

$ git clone http://github.com/sitaramc/gitolite.git
$ mkdir $HOME/bin
$ gitolite/install -ln  # デフォルトだと$HOME/binに入る.適当にパスを通すかなんかする

gitolite用のgitユーザの追加(別にgitじゃなくても良い)

$ sudo useradd -m -U -r -s /bin/bash -d /srv/git git

gitアカウントでgitoliteの初期設定

$ sudo su - git
$ gitolite setup -pk aaa.pub  # aaa.pub がadminユーザの公開鍵
$ exit

あとはgitosisなんかと同じようにgitolite-admin.gitで管理

$ git clone git@host:gitolite-admin.git


gitosisからリポジトリを移行する場合にはgitosisアカウントのホームにあるrepositoriesディレクトリをgitアカウントのホームディレクトリにコピーする.
ユーザやグループの変更を忘れずにする.

$ sudo cp -a /srv/gitosis/repositories /srv/git
$ sudo chown -R git.git /srv/git/repositories

これであとはgitolite-admin.gitのコンフィグを設定したりkeyを登録し直せばok.
コンフィグ移行ツールとしてgitolite.gitの中に./convert-gitosis-confってのがある.


@ローカル環境

# gitosis-admin.gitをcloneしたディレクトリ
$ git clone http://github.com/sitaramc/gitolite.git
$ git clone git@sakura:gitolite-admin.git
$ gitolite/convert-gitosis-conf < gitosis-admin/gitosis.conf >> gitolite-admin/conf/gitolite.conf
$ cp -a gitosis-admin/keydir gitolite-admin
$ cd gitolite-admin
$ git add conf/gitolite.conf keydir
$ git commit -m "migrating from gitosis"
$ git push origin master

これで移行できるはず.keydirをコピーするときgitosisとgitoliteでの自分の公開鍵の名前が違うと重複してしまうので注意.
あとはいままでのローカルのリポジトリのremoteを適当に修正する.
今回の場合ユーザ名がgitosisからgitに変更になっているので,

$ git remote set-url origin git@host:xxx.git

とかすればok.