具体的には、こんな感じで怒られます。
中止: 必須機能 'dotencode' はサポートされていません
もしくは
abort: requirement 'dotencode' not supported!
linuxmintの常用ノートから、ubuntu10のファイルサーバにリポジトリをcloneして、いざそのリポジトリをhgwebdirから閲覧しようとすると、前述のエラーに悩まされるわけです。
小生も泡食って色々調べてしまいましたが、リポジトリが壊れてるわけではありません。
コイツは、「「リポジトリバージョン」の違い」とでも言うべき現象です。
既に出来上がってるリポジトリがどうなってるかは、.hg/requires を見れば判ります。dotencodeを使ってるリポジトリでは、当然最後の行に dotencode が書いてある筈です。ただし、このファイルのdotencodeの行を削除すれば良いかというと、残念ながら違います。リポジトリを正しく読めなくなるっぽいので、後述の再構築をする方が安善でしょう。
http://mercurial.selenic.com/wiki/RequiresFile#Known_requirements
問題のdotencodeは、1.7から増えた機能。MacOS系及びWindows系のファイルシステム対応らしい。故に1.4では読めない。というわけです。しかし流石はmercurial、リポジトリの変換機能(厳密には再構築)は存在します。もちろん1.7以上で実施する必要があります。
hg --config format.dotencode=0 clone --pull 旧リポジトリ 新リポジトリ幾つか作っちゃったぜ。って人は、仕方がないので一括変換しましょう。
https://raw.github.com/gist/3065657/9c97d72f59e555dd73e9c1af4a6e5f386b0d04d1/oldformat.sh
古いリポジトリも依然として使えますし、1.7以上であればpush/pullできます。
もし、「オレサマはWindowsもMacOSも使わねえぜ」って人であれば、最初からこの機能はoffれます。流石はmercurial。
.hgrcにこんなのを書くらしい。
[format]念のため強調しておくと、この設定が効くのはリポジトリの新規作成(init/clone)の時だけです。の筈。前述の変換コマンドラインは、この設定を上書きしつつ処置するわけですね。
dotencode = False
更に、このケースが問題になるのは、ローカルmercrialがリモートリポジトリを、直接参照する時だけです。hgwebdir.cgi等を使ってる場合はこれに当てはまりません。リモートのmercurialがリモートのリポジトリを操作しますから。