MercurialとApacheの連携

提供: Software Development Memo
移動先: 案内検索


本ページでは、Apacheを経由したMercurialの利用手順を記述します。Mercurialのバージョンは1.7.3を想定しています。インストール手順はRedmineの導入手順を踏襲していることを想定します。

手順

mercurialのtar.gzファイルを解凍したディレクトリの直下にある「hgweb.cgi」ファイルをApacheのドキュメントフォルダ(例:/usr/local/apache2/htdocs 以下)に配置します。

「httpd.conf」に以下を追記します。

ScriptAlias /hg/test htdocs/hgweb.cgi

cgiファイルの配置やURLは適宜修正してください。

「hgweb.cgi」を編集します。

#!/usr/bin/env python
#
# An example hgweb CGI script, edit as necessary
# See also http://mercurial.selenic.com/wiki/PublishingRepositories

# import sys
# sys.path.append('/usr/bin/python')

# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "/var/lib/hg/test"

# Uncomment and adjust if Mercurial is not installed system-wide:
# 拡張モジュールのインストール先が既定と異なる場合は追加
import sys; sys.path.insert(0, "/usr/local/lib64/python2.4/site-packages")

# Webページの文字化け対策
import os; os.environ["HGENCODING"] = "UTF-8"

# Uncomment to send python tracebacks to the browser if an error occurs:
#import cgitb; cgitb.enable()

from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
wsgicgi.launch(application)

最後にApacheを再起動すれば、「http://<HOST_NAME>/hg/hgweb.cgi」にてアクセス可能となります。

トラブルシューティング

Webアクセス時、Internal Server Errorとなる

Apacheの「error_log」には以下が表示されている場合、Mercurialのモジュールが正しく読めていない可能性が有ります。「sys.path.insert」の設定を見直してください。

TortoiseHGのPush時、「HTTP Error 500: Internal Server Error」となる

Apacheの「error_log」には以下が表示されている場合、hgrcファイルの所有者がApahce実行ユーザとなっていない可能性が有ります。

Not trusting file /var/lib/hg/test/.hg/hgrc from untrusted user root, group root
Premature end of script headers: hgweb.cgi

rootからApache実行ユーザに所有者を変更すればOKです。

更新履歴

  • ページ作成 -- 2011年2月3日 (木) 14:59 (JST)