雑種のポメラニアン

フリープログラマーの日記とか人生観とか綴るよ

gitサーバーをgitosisからgitoliteへ移行した

Ubuntu12.04からgitosisがリポジトリから削除され
新たにgitoliteに変わった。

gitosis導入時に凄い苦労したことと
gitosisのお蔭でsshに関する理解が深まったので
gitosisには愛着があったのだが
調べてみるとgitoliteの方が性能が良いとか設定が簡単とか
全般的に評判が良かったので、乗り換えることにした。

Synapticでgitoliteをインストール

gitolite用ユーザーを追加

useradd -m -U gitolite

以下gitoliteで作業する。

パスを.bashrcに追加

export PATH="/home/gitolite/bin:$PATH"

ここがよくわからなかったのだが、本来は
/usr/share/gitolite/gl-system-install
でgitoliteのインストールができるはずなのだが
src/*が見つからないとか何とかエラーが出たので次の作業を追加した。

git clone git://github.com/sitaramc/gitolite gitolite-source

でcloneしてから

cp -r gitolite-source/src/* /home/gitolite/bin

でsrcの下を丸ごとコピーした。

次に

/usr/share/gitolite/gl-setup $HOME/admin.pub

を実行。エディターが表示されるが即終了してOK。
$HOME/admin.pubはgitoliteの管理者の公開鍵を指定する。

git clone gitolite@localhost:gitolite-admin

で管理用リポジトリをクローンする。

gitosisのkeydir/*をgitolite-adminのkeydirにコピる。

gitosisの設定ファイルからgitoliteの設定ファイルを生成する。

/usr/share/gitolite/gl-conf-convert < gitosis.conf > /tmp/gitolite.conf

このままだと管理ファイルが編集できないので

cat /home/gitolite/gitolite-admin/conf/gitolite.conf >> /tmp/gitolite.conf

で管理者権限を追加してコピる。

cp /tmp/gitolite.conf /home/gitolite/gitolite-admin/conf

/home/gitolite/gitolite-adminでcommitしてpushすると移行完了。


なお、私の場合gitサーバーとsshサーバーを立てているのですが
gitサーバーはsshサーバーを特殊な使い方をしているだけなので
実質sshdと設定は同じなのですが、2つのsshサーバーを立てる方法も記載しておきます。

  1. /etc/init.d/sshを/etc/init.d/ssh_gitにコピる。
  2. /etc/ssh/sshd.configを/etc/ssh/sshd_git.configにコピる。
  3. /etc/init.d/ssh_gitのsshd.configをsshd_git.configに置換。
  4. /etc/ssh/sshd.configとsshd_git.configのポートを自分の考えるように設定する。
  5. /etc/ssh/sshd_git.configの末尾に「AllowUsers gitolite」を付けると安心。
  6. /etc/servicesにssh_gitを追加する。

最後のは忘れやすいので気をつけてください。

常に表示される訳ではないのですが
http://git.mydns.jp:8080/gitweb/gitweb.cgi
で私のgitリポジトリを公開してます。
参考にどうぞ。