概要
GitWeb を利用して、以下のような条件で、リポジトリを Web で参照できるように、設定してみた。- Gitolite3 管理用リポジトリは、公開対象から除外する。
- Gitolite3 管理用リポジトリで、公開設定が行える。
参考サイト
利用ソフト
- Apache2 (2.4.7-1ubuntu4.1)
- git (1:1.9.1-1)
- Gitolite3 (3.5.3.1-2)
- GitWeb (1:1.9.1-1)
前提条件
Ubuntu 14.04 上で、設定を行った。Apache2 および git は、インストール済みとする。
Gitolite
Gitolite3 のインストールおよび設定は、以下のサイトを参考に行った。Gitolite3 パッケージ名は、gitolite3 と、指定する必要があるので注意。gitolite は、バージョン2.3で古かった。
Gitolite3 ユーザーは、パッケージインストール時、/var/lib/gitolite3 に自動的に作成される。
Git管理の神ツール「Gitolite」なら、ここまでできる! (1/2)
GitWeb
インストール
sudo aptitude install gitwebsudo a2enmod cgi
Apache2 の設定
まず、Apache の設定で、/etc/apache2/conf.d/gitweb がインストールされているが、場所もファイル名も間違っている。sites-available に gitweb.conf とリネームして移動して、conf.d ディレクトリを削除する。
gitweb.conf の中身は、変更なし。
GitWeb の設定
次に、/etc/gitweb.conf を修正。$projectroot には、Gitolite3 のリポジトリを指定。その他は、コメントインするだけ。
sudo vi /etc/gitweb.conf
$projectroot = "/var/lib/gitolite3/repositories";
$git_temp = "/tmp";
$home_text = "indextext.html";
$projects_list = $projectroot;
@stylesheets = ("static/gitweb.css");
$javascript = "static/gitweb.js";
$logo = "static/git-logo.png";
$favicon = "static/git-favicon.png";
@diff_opts = ();
リポジトリパーミッションの設定
このままでは、www-data ユーザで、Gitolite3 のリポジトリにアクセスする権限が無いので、その設定を行う。sudo gpasswd -a www-data gitolite3
sudo chmod g+rx /var/lib/gitolite3
sudo chmod g+r /var/lib/gitolite3/projects.list
sudo chmod -R g+r /var/lib/gitolite3/repositories
sudo find /var/lib/gitolite3/repositories -type d -exec chmod g+x {} +
新規にリポジトリを追加する場合に、グループ読み取り可になるようパーミッションを設定。
sudo vi /var/lib/gitolite3/.gitolite.rc
UMASK => 0077,
↓ 変更
UMASK => 0027,
Apache2 をリスタート
sudo apache2ctl restart
以上の設定で、すべてのリポジトリが公開できる。
公開リポジトリ設定
このままでは、管理用リポジトリも一覧に出てしまうので、指定したものだけリストアップされるように設定。sudo vi /etc/gitweb.conf
$projects_list = $projectroot;
↓ 変更
$projects_list = "/var/lib/gitolite3/projects.list";
以下追加。一覧にあるリポジトリ以外は、直接 URL を指定しても表示されなくなる。
$strict_export = "true";
上記で指定した project.list ファイルには、Gitolite3 で @all または、gitweb に参照権限を付与したプロジェクトが、リストアップされる。
Gitolite3 管理リポジトリの gitolite-admin/conf/gitolite.conf ファイルを、以下のように変更して push すると、project.list ファイルに、公開リポジトリが書き込まれる。
repo foobar
R = gitweb