2012-05-18 [長年日記]
gitoliteとgitweb
この間gitosisについて書いたばかりだけど、Ubuntuを11.10から12.04にあげたらgitosisが削除されてしまってgitoliteを使えということらしいのでそのメモ書き。gitosisのリポジトリ(repositories/*.git)が残っているはずなのでこれをコピーしてもいいんだけど、管理しているリポジトリ自体一つしかないので、gitoliteを新規でセットアップしてローカルからプッシュすることにした。
gitoliteの大きな特徴として、一般ユーザでもローカルのリモートリポジトリを作成することができるというのがあり、その場合は、
$gl-setup user.pub
とすれば*1、自分のhomeディレクトリ以下にrepositories/*.gitが生成される。ただ、今回はgitwebとの連携も考え普段使っているユーザとは別の、専用のユーザを作成することにした。ということでまずはユーザを作成し初期化する。
$sudo adduser --system --disabled-password --shell /bin/sh --group gitolite $sudo -H -u gitolite gl-setup /path/to/user.pub
途中、.gitolite.rcの編集画面が出てくるので、gitwebで連携したい場合は、$REPO_UMASKを0077から0027に変更しておくとよい*2。 あとは、自動的に生成されるリポジトリgitolite-adminの内容を変更して管理を行う。
$git clone gitolite@localhost:gitolite-admin $cd gitolite-admin $vi conf/gitolite-admin.conf (適当に編集) $git commit -am "commit message" $git push
こんな感じ。
ユーザの追加はkeydir/に公開鍵を追加してcommit,push。同じユーザ名で複数のマシンからアクセスしたい場合は、user@hostname.pubというファイル形式にすればOK。
$cp /path/to/user@hostname.pub keydir/ $git add keydir/user@hostname.pub $git commit -am "add user" $git push
こんな感じ。
gitwebとの連携
次にgitwebとの連携。まずはWebサーバーを動かしているユーザ(ubuntuだとwww-data)をグループgitoliteに加える。
$adduser www-data gitolite
次にgitolite-admin.confに以下の記述を追記する。
repo repository1 repository2 R = gitweb
これでprojects.listが適切に生成される。あとは/etc/gitweb.confを修正すればOK。repositories/へのパスと、projects.listへのパスを設定すれば動くはず。認証やアクセス制限をかける場合は、/etc/apache2/conf.d/gitwebを修正する。