TortoiseHGを0.8にしたら日本語ファイル名でエラーが出た

使っているマシンのTortoiseHGを0.5から0.8(TortoiseHg-0.8-hg-1.3.exe)にしたところ、ファイル名が日本語のファイルの一部で追加、コミットなどができなくなりました。
TortoiseHg で日本語ファイル名 - あすかぜ・ねっと によると、TortoiseHG 0.8では一部の文字を含む日本語ファイル名をもつファイルは扱えないということがわかりました。そこで、http://bitbucket.org/tortoisehg/stable/downloads/ からTortoiseHg-0.7.6-hg-1.2.1.exeをダウンロードしてインストールしました(0.6はすでにダウンロードできないようです)

上記のページでは日本語ファイルを扱う方法として次の2種類があると説明されています。

  1. TortoiseHg 0.7 + hg-fixutf8
  2. TortoiseHg 0.6 + win32mbcs

私はリポジトリを共有している複数のマシンでwin32mbcs拡張を入れて使っています。Mercurialはファイル名をバイナリで格納しているため、使用しているリポジトリ内ではファイル名はCP932で格納されていると思われます。ここで1台のマシンだけhg-fixutf8を使うと、残りのマシンとの間で問題が出ると予想されます。そこでイレギュラーですがTortoiseHG 0.7 + win32mbcsで使うことにしました(実はhg-fixutf8を入れるのが面倒だったのも理由のひとつです ^^;)

win32mbcsエクステンションを使うには、mercurial.iniに次のように記述します。

[extensions]
hgext.win32mbcs = 

この状態で使ったところ、0.8では使えなかった多くの日本語ファイル名を扱えるようになりましたが、やはり一部のファイル名でaddやcommitができないという問題が出ました。その場合にはコマンドライン(hg)から操作することで問題を回避できました。ちょっと不便ですが、win32mbcsはTortoiseHGに標準的に組み込まれていますので、hg-fixutf8に比べて安心感があります。

将来的には様々なものをUTF-8に移行していくのが正しいのだと思いますが、しばらくはTortoiseHg 0.7 + win32mbcsで使い続けようと思います。