gitリポジトリをhttpで公開する

開発環境(クライアント)とgitの公開リポジトリ(サーバー)を別々にして、
httpで公開する設定方法について書きました。
なお、サーバー側はDebian(squeeze)で設定を行いました。

サーバー側

gitの公開リポジトリを準備
% cd /var/www    # HTTPサーバで設定したリポジトリの公開場所
% sudo mkdir sample_rep.git
% sudo cd sample_rep.git
% sudo git init --bare
  Initialized empty Git repository in /var/www/sample_rep.git/
% sudo git update-server-info
% chown -R www-data . # HTTPサーバを動作させる user が www-data である場合
apacheのwebdev用モジュールをロード
% sudo a2enmod dav
% sudo a2enmod dav_fs
apacheの設定ファイルに以下を追記
% sudo vim /etc/apache2/sites-available/git

<Location "/git">
   DAV on
   AuthType Digest
   AuthName git
   AuthUserFile /etc/apache2/.htdigest
   Require valid-user
</Location>
ダイジェスト認証用のファイル作成

オプションパラメーターのgitは、設定ファイルのAuthNameでadminはユーザー名。

% sudo cd /etc/apache2/
% sudo htdigest -c .htdigest git admin
apacheの設定を反映
% sudo apache2ctl graceful

クライアント側

クローンでサーバー側から取得する
git clone http://admin@hogehoge.com/git/sample_rep.git