Mercurial, webからリポジトリ見れるようにした

普段は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経由でいいよねぇ・・

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中