2010-01-06

さくらインターネットにインストールしたMercurialをバージョンアップ

しばらくぶりにさくらインターネットにインストールしていたMercurialを使おうとしたら、hg stでエラーメッセージ。調べてみたらさくらインターネットではPythonを2.5.2から2.6.2にバージョンアップしたらしい(お知らせ記事)。

Mercurialもver0.9.5をインストールした時からアップしてなかったので、これを機に1.4に入れ替えることにした。
こちらの記事を参考にやったら結構簡単にできました。感謝。

さくらとPythonとMercurial。 - handlerの日記


これでOKだー、と0.9.5のときに作ったレポジトリのCGIにアクセスしてみたらInternal Server Error。どうやらMercurialのhgweb.cgiもバージョンアップされてたらしいので入れ替えることにする。

Mercurialに同梱されているhgweb.cgiというスクリプトをwww用ディレクトリにindex.cgiと改名してコピーする。実行権限を与えておくのを忘れずに。

cd mercurial-1.4
cp ./hgweb.cgi ~/www/hgtest/index.cgi
cd ~/www/hgtest/index.cgi
chmod +x index.cgi


index.cgiをレポジトリに合わせて書き換えていきます。まずPython pathの設定の行のコメントを外して環境に合わせてパスを設定する。

hgweb.cgi(6-7行)
import sys
sys.path.insert(0, "/home/ユーザ名/local/lib/python/site-packages/")


次にUTF-8の設定を有効にする。日本語を表示させたいならこれが必要。

hgweb.cgi(21-22行)
import os
os.environ["HGENCODING"] = "UTF-8"


最後にホームディレクトリに作ったMercurialレポジトリの位置を指定する。私は~/hgrepos以下にレポジトリをまとめているのでこんな感じになった。

hgweb.cgi(27行)
application = hgweb("/home/ユーザ名/hgrepos/レポジトリ名/", "レポジトリの説明")



蛇足。上記の設定をしたのに500 Internal Server Errorになっちゃう場合は以下のところのコメントを外すと詳細なエラーメッセージをブラウザに表示してくれる。私もちょっとハマりかけたのでこれが役に立った。

hgweb.cgi(13-14行)
import cgitb
cgitb.enable()



以上でバージョンアップは完了。hgweb.cgiも進化しているようでページデザインとかが小奇麗になっている気がする。

iPhone Note App File Sync: shortlog


【関連記事】
サルノオボエガキ: Mercurialをサーバにインストールした
2008年1月の記事。2年ぶりのバージョンアップでした。

0 件のコメント: