普段はsshで十分なのですが、だれかにcloneさせたいとか、pushもいちいち秘密鍵作ってもらったりとかめんどくさい。エンジニアならそうでもないんだけど。
とりあえずブラウザから見れて、hg clone http://example.com/hg/repo-name な感じにできるところまで。
mkdir -p /var/www/hg cd /var/www/hg cp /usr/share/doc/mercurial-1.5/contrib/hgwebdir.wsgi ./ vi /etc/httpd/conf.d/hg.conf <VirtualHost *:80> Servername hg.runeleaf.net ErrorLog logs/hg.runeleaf.net-error_log CustomLog logs/hg.runeleaf.net-access_log combined WSGIScriptAlias /hg "/var/www/hg/hgwebdir.wsgi" <Location /hg> AuthUserFile /path/to/.htpasswd AuthGroupFile /dev/null AuthName "Mercurial Server" AuthType Basic require valid-user </Location> <Directory /var/ww/hg> Options ExecCGI FollowSymlinks AddHandler wsgi-script .wsgi AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost>
ベーシック認証などを実際にpushするユーザー名で設定しておくと幸せになれるって話らしい。
mkdir -p /var/hg/repos/hoge cd /var/hg/repos/hoge hg init cd /var/hg vi hgweb.config [web] allow_push = username push_ssl = true [paths] / = /var/hg/repos/**
allow_pushでpushユーザーを制限したり、push_sslでhttps経由じゃないとだめとか。falseにするとhttpでpushできるけどオススメしているサイトはなかった。
hgweb.configの設定をwsgiスクリプトにする。
vi /var/www/hg/hgwebdir.wsgi # コメント外す import os os.environ["HGENCODING"] = "UTF-8" application = hgwebdir('/var/hg/hgweb.config')
httpd再起動して完了。
http://hg.runeleaf.net/hg にアクセスするとリポジトリの一覧がみれたり、
hg clone http://hg.runeleaf.net/hg/hoge
とかでcloneできたり。
まあpush権限なんて普通に考えたらssh経由でいいよねぇ・・