Debian GNU/Linux で Git を Smart HTTP Transport で使う

GitリポジトリをHTTP経由で使うときにSmart HTTP Transportを用いた方が良いとのことなのでそのようにする。

参考サイト

環境

はじめに

結局 Apacheから git-http-backend を呼び出すだけなのでいろいろな組み合わせが可能。

  • ユーザ認証
  • 通信路暗号化
    • あり(HTTPS
    • なし(HTTP)

今回はとりあえず Digest認証+通信路暗号化なしで実現する。

Git用ディレクトリの準備

Gitリポジトリを置くディレクトリを準備する。

% sudo mkdir -p /var/git
% cd /var/git
% cd ./sandbox.git
% sudo git --bare init --shared=true
% sudo git update-server-info
% sudo chown -R www-data:www-data .

http://hogehoge.server.jp/git/sandobox.git をリモートリポジトリとして使う。

Apacheの設定

/etc/apache2/site-avaiables/default に以下を追記する。

SetENV GIT_PROJECT_ROOT /var/git
SetENV GIT_HTTP_EXPORT_ALL
ScriptAlias /git "/usr/lib/git-core/git-http-backend"

<Location /git>
 AuthType Digest
 AuthDigestProvider file
 AuthName "Git"
 AuthUserFile /var/git/git.htdigest
 Require valid-user
 Order allow,deny
 Allow from all
</Location>

Apacheを再起動する。

% sudo /etc/init.d/apache2 restart

パスワードファイルの設置

next49をユーザとして、ダイジェスト認証用のパスワードファイルを設置する。

% sudo htdigest -c /var/git/git.htdigest Git next49

確認する

ローカルマシンで確認する。

% git clone http://hogehoge.server.jp/git/sandobox.git
% touch newfile
% git add
% git commit
% git push origin master