Clone wiki

TortoiseHg / Home.ja

TortoiseHg Windows Explorer (シェル) 拡張 for fixutf8 拡張

概要

FixUtf8拡張は、TortoiseHg 2.2 (Mercurial 2.0)では動作しません。 TortoiseHg 2.1.4 (Mercurial 1.9.3) を使ってください。

http://groups.google.com/group/mercurial-ja/msg/429efb30451ad8dd

TortoiseHgのWindowsシェル拡張は、エクスプローラでのアイコン表示(アイコンオーバーレイ)と 右クリックメニューの機能を提供します。

2011年11月リリースのTortoiseHg 2.2でシェル拡張のUnicode化が本家に取り込まれました。 従って、これ以降のバージョンにて、fixutf8を有効にしていない場合、 このリポジトリのdllは必要ありません。

2011年11月現在の、2.2.xでは、fixutf8拡張でのASCII以外は全くダメという問題があります。 このリポジトリでは、これらの問題を解決したdllを配布します。

Logic:ロジック

architectureの図に書かれているように、 .hg/dirstate と .hg/thgstatus のエンコードは以下のようになります。

  1. FixUtf8 extension が有効の場合、UTF-8.
  2. FixUtf8 extension が有効でない場合、CP_ACP(日本語WindowsではCP932≒SJIS)

win32mbcs拡張はエンコードは変わらずSJISです。

dllのエンコード判断ロジック

  1. UTF-8が不正で無い場合、UTF-8。
    環境変数 THG_SHELLEXT_UTF8 を追加し、 false or no を値にすることで、これをスキップできます。
  2. UTF-8が不正な場合、CP_ACP(日本語WindowsではCP932≒SJIS)

日本語の1文字はSJISで2バイト、UTF-8で3バイトなので、SJISをUTF-8と誤判断する可能性は 低いかと思います。 仮にdllで誤判断されても、dllではMercurialの操作は一切しないため、影響ありません。

インストール

ダウンロード

英語の ダウンロード から、dllをダウンロードして下さい。

dllの入れ替え

32ビット

  1. "C:\Program Files\TortoiseHg"にあるTHgShellx86.dllを別の名前に変える(e.g. THgShell-01.dll)
  2. ダウンロードしたdllを"C:\Program Files\TortoiseHg\THgShellx86.dll"として置く
  3. (オプション) 必要に応じて、環境変数 THG_SHELLEXT_UTF8 を追加し、 false or no を値として設定してください。 詳しくは Logic:ロジック を参照してください。
  4. ログアウト
  5. ログイン

64ビットでは"C:\Program Files\Common Files\TortoiseHg\ThgShellx64.dll"として下さい。

ログアウト・ログインの代わりにタスクマネージャでexplorer.exeを停止し新たに立ち上げる方法もあります。

詳しくは、 README.txt をご覧ください。

Updated