すげー面倒くさかった。redmineよりもindeferoよりも。たぶん。
まぁでも一応は使えるようになったので、メモ。
まず、indeferoのときは、お試しでインストールの時にあれこれいじって環境が汚れたので、今回はテスト用に仮想マシンを立てた。(centos5.6の仮想マシンだけど、ディスクIOが遅い?6.0じゃないのは、インストール手順が探せた(http://famousphil.com/blog/2011/06/installing-gitorious-on-centos-5-6-x64/)のと、本番環境にインストールするのを見越して。タダ使うだけなら、ubuntuにするのがいいかと。この辺とか。 http://tech.lexues.co.jp/archives/500 )
基本は http://famousphil.com/blog/2011/06/installing-gitorious-on-centos-5-6-x64/ に従うだけ。いくつか詰まったところと、このサイトに変なことを書いてあるところがあったので、そこを直して作業を進める。あとは、自分の理解が足りていなかったところもあったのでそこも補足。
もう作業手順は忘れてしまったので、順不同で箇条書きする。
・鍵認証でsshでコマンドを投げるとき、シェルログインしないので.bash_profileは読まれない。サイトの手順どおりに勧めると、環境変数が読まれなくて、gitでpushできなくなるので、.bashrcでPATHを書く。
・gemでいろいろインストールするのはなくてもいいとかなんとか言っているけど、ちゃんと不足分をインストールしないと動かない。
・上記のサイトでも指摘されているが、actyivemqは不要だった様子。でも、これを入れなかったせいで、後述の、commit間のdiffが表示されない問題が出ているような、、、。
・ultrasphinxをrakeできなかった。http://tech.lexues.co.jp/archives/500 に指摘されているとおりに、config/ultrasphinx/production.confのbase_tagsとなっている部分をtagsと書き変えて作業再開。
・rootのcronで@rebootでサービス開始しろと言っているが、それをやると、cronとmysqlの起動順の違いで起動されない場合があったので、/etc/rc.local(だっけ?)で起動させる。
このくらいでgitoriousが立ち上がった。注意が必要だったのは、config/gitorious.ymlのgitorious_client_port: 80 と gitorious_client_host: の設定。gitorious_client_hostには、gitoriousが立ち上がっているサーバの名前を書く。普通は、gitorious_hostと同じでいいはず。何書いていいのか分からなかったから適当に書いてたら、動かなかった。このgitorious_client_hostを見て、http経由でgitリポジトリとやり取りしている部分があるっぽい?
で、大体ほとんど動くけど、マージリクエストで、diffを表示させるところがうまく表示できなかった。activemqを入れなかったのが原因かも。rubyのソースをちょこちょこ直してみたけど全然変化なしで、困った。
で、とりあえず感想として、RubyonRailsのサイトって、入れるのが面倒くさすぎて、なんだかもうやってられない感じ。gitorious自体はgitの中央リポジトリを持って開発するうえで強力なツールだとは思うのだけれども、、、。はてさて。
で、ついでだからgitoriousの作業フローをここにメモっておく。
中央リポジトリがあらかじめgitorious上に作成されていたとする。
中央リポジトリのコミット権限なしで開発をしたいユーザは、gitoriousのサイト上でリポジトリをcloneする。
このとき、gitorious上では、自分がリポジトリをcloneしたという情報が見える。
cloneしたリポジトリを自分の開発端末にpullして開発、適当にcommitして、gitoriousにpush。
で、gitoriousのサイトで、cloneした元のリポジトリに対してmergeリクエストを出す。このマージリクエストは、redmineのチケットみたいになっていて、いろんな人(リポジトリを持っているプロジェクトのメンバーなど)がマージリクエストに対してコメントを書き、それを反映して、開発者は適当に変更、pushしなおして、マージリクエストを更新していく。
で、中央リポジトリに反映させていいというコンセンサスが取れたら、中央リポジトリのコミッターがマージリクエストされた変更を、コミッターのgitリポジトリでマージして中央にpush。このサイクルを繰り返して開発を進める感じ。
各ユーザは、gitoriousが走っているサーバにユーザを持ったりログインする権限を持っている必要はなく、gitoriousのsshの公開鍵を教えておくことでリポジトリとやり取りする。他の開発者の変更を見たりするときに楽できるから、svnで開発するより楽にリポジトリ管理できると思うけど、、、。どうかなぁ。