まず、 Mercurial を DreamHost で使う の手順に従う。
「URI をきれいにする」の、
# clean URI import os os.environ['SCRIPT_NAME'] = os.getenv('SCRIPT_URL')[:-len(os.getenv('PATH_INFO', ''))] ...
この部分のみエラーでうまくいかないので、
os,environ['SCRIPT_NAME'] = ''
にしちゃう。これでも動く(http://hg.example.com/hgwebdir.cgi/hello みたいなのじゃなく http://hg.example.com/hello みたいな URL になる)。
なぜエラーになるのかはよくわからない(さくらインターネットのレンタルサーバ(スタンダードプラン)だとエラーログが見られない)けど、環境変数みてみたら SCRIPT_URL がセットされてなかったから、存在しないキーを参照しているとかでダメなのかもしれない。
・・・けど、自分で使う分には一個のレポジトリで十分だったので、結局 hgweb.cgi 一つおくほうに戻してしまった。 hgwebdir.cgi の collections の中身にどんなレポジトリ群があるのかをみる hg hogehoge コマンドはないのかな。あると便利なんだけど。