GitリポジトリをWebDAV(+https)経由で公開する

色々やったけどこれで出来た。

環境

  • サーバ: CentOS 5.3
  • クライアント: Mac

インストール

# yum -y instal git-core

WebDAVの設定

  • /mnt/drbd/www/gitをwebdavで公開する
  • htpasswdは/mnt/drbd/www/.htpasswdにあるのが前提
  • apachewebdavの環境構築済みであるのが前提
# vim /etc/httpd/conf.d/git.conf
Alias /git /mnt/drbd/www/git
<Location "/git">
    DAV on
    SSLRequireSSL
    AuthType Basic
    AuthName "Git"
    AuthUserFile /mnt/drbd/www/.htpasswd
    <Limitexcept GET HEAD PROPFIND OPTIONS REPORT>
        Require valid-user
    </LimitExcept>
</Location>

設定したら反映

# /etc/init.d/httpd reload

Gitリポジトリの作成

# cd /mnt/drbd/www/git/
# mkdir projects.git
# cd projects.git
# git --bare init
# vim description 
適当にdescriptionを書く
# echo "https://yamkazu.org/git/projects.git" > cloneurl
# printf "[gitweb]\n\towner = Kazuki YAMAMOTO\n" >> config
# chmod +x hooks/post-update
# git update-server-info
# cd ..
# chown -R apache.apache projects.git

クライアントの準備

httpsを使うにはcurlにオプションつけてインストールしないとダメなので、つけてない場合は一度アンイストール。

# sudo port uninstall git-core
# sudo port uninstall curl
httpsアクセスの為の設定
# sudo port edit curl
configure.argsのwithout-sslをwith-sslに変更
インストール
# sudo port install curl
# sudo port install git-core

オレオレ証明書はGIT_SSL_NO_VERIFY=1をつけないと認証が通らない。毎回つけるのが面倒なのでaliasに設定してしまう。

# vim ~/.bashrc
以下を追加
alias git='GIT_SSL_NO_VERIFY=1 git'
認証情報の設定
# vim ~/.netrc
machine yamkazu.org
login <ユーザー名>
password <パスワード>

パーミッションも変更

# chmod 600 ~/.netrc
動作確認
# git clone http://yamkazu.org/git/projects.git
# cd projects
# touch README.txt
# git add README.txt
# git commmit -m "test"
# git push origin master

push出来ているか確認する為、適当な場所でcloneする。

# git clone http://yamkazu.org/git/projects.git
# ls projects

さっきcommitしたREADME.txtがあればOK。