GitLabとgit-daemonを連携させる
2013/07/03追記
最新版のGitLabではこの記事に載っている方法は使えません。
こんにちは。あっという間に春が終わり、夏に入ろうかという今日この頃。
GWはだらだらと過ごそうと思います笑
今回はGitLab(The first single application for the entire DevOps lifecycle - GitLab | GitLab)のお話です。
研究室にこのGitLabサーバーを建て、運用してますがなかなか便利です。
ただ、Gitプロトコルを使って気軽にクローンできないのは何かと不便な場面が出てきたので、GitLabのソースをちょこっと改造してgit-daemonと連携するようにしました。
忘れないようにそれのメモ。あ、改造して不具合が出ても自己責任でお願いします。
手順
GitLabサービスを停止
$ sudo service gitlab stop
git-daemonをインストール
$ sudo apt-get install git-daemon-run
git-daemon-runの設定
/etc/sv/git-daemon/run を編集します。
gitoliteのレポジトリは /home/git/repositories にあるとします。
/etc/sv/git-daemon/run
#!/bin/sh exec 2>&1 echo 'git-daemon starting.' exec chpst -ugitdaemon:git \ "$(git --exec-path)"/git-daemon --verbose --reuseaddr \ --base-path=/home/git/repositories --export-all --enable=receive-pack /home/git/repositories
になるようにしてください。この辺はあちこちのサイトに書いてあることと一緒ですね。
GitLabの改造
改造といっても一行加えるだけです。
GitLabを設置したディレクトリ(公式通りに設置したのであれば /home/gitlab/gitlab/)の
lib/gitlab/backend/gitolite_config.rb をいじります。
lib/gitlab/backend/gitolite_config.rb 197行目付近
... # Add write permissions repo.add_permission("RW+", "", name_writers) unless name_writers.blank? repo.add_permission("RW+", "", name_masters) unless name_masters.blank? # !!!追加!!! repo.add_permission("R", "", "daemon") repo ...
GitLabサービスを開始
sudo service gitlab start
以上で手順は終了です。
確認
これでこれから新たに作成されるレポジトリのすべてが、Gitデーモンによって公開されるようになりました。
すでにGitLabに登録されているレポジトリの場合、Administrator をレポジトリに登録、削除などしてレポジトリに変化を起こせば、デーモンが適用されたレポジトリに変更されます。
こんな感じのコマンドでクローン出来れば万々歳です。
git clone git://localhost/someproject.git
まぁ結局何をしたかというとGitolite の config に R = daemon を追加しただけです。直接 gitolite-admin の設定を変更しても良かったのですが、いちいち変更するのも面倒だったので、GitLabに少しだけ手を加えて楽をした、という具合ですね。
不要だとは思いますが、Gitwebも同様にして出来ます。気になる人はやってみてください。
では。