それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Mercurialを文字化けさせないTIPS

Mercurialは便利な分散バージョン管理システムです。結論から言うと、『Mercurialは設定すれば日本語が化けない。』すごくすてき。

日本語が化ける箇所

  1. コミットメッセージ
  2. ファイルの内容
  3. ファイル名

mecurialの場合

コミットメッセージ
とくに何もしなくても、Unicodeで保存されてUtf-8になるみたい。便利だね。
ファイルの内容。
保存時の文字コードで保存される。
ファイル名
Windowsでの日本語ファイル名はCP-932で構成。しかし、Ubuntu/MacはUtf8で出来ている。つまり、ファイル名は、文字化けが起きる。
ファイル名文字化けを防ぐ

文字化けを防ぐ方法は、環境を限定すること。Windowsだけで使う。Ubuntuだけで使う。

これは不便すぎる。

不便すぎるから、何とかしたいです。つまりWindows環境ではCo/Ci時にファイル文字コードを修正したい。

日本語ファイル名を可能にするfixutf8を入れる

Windows環境でhg-fixutf8をダウンロードする。
hg clone http://bitbucket.org/stefanrusek/hg-fixutf8/
mercurial.ini に hg-fixutf8を設定する。

mercurial.ini に以下を追記

[extensions]
fixutf8 = C:\Program Files\Mercurial\hg-fixutf8\fixutf8.py

mercurial.ini は次の場所にありました。

ユーザー環境 C:\Documents and Settings\takuya_1st\Mercurial.ini
システム全体 C:\Program Files\Mercurial\Mercurial.ini

Windowsリポジトリのファイル名を更新する。

文字化けしてしまったファイル名を正しく修正します。

hg addremove -s 100
hg commit -m "Fix filenames"

詳しくは http://www.asukaze.net/etc/vcs/hg-fixutf8.html

エラー発生した場合。

僕の環境では動きませんでした。python 2.5.2/ mercurial 1.2.1

No module named ctypes
hg clone
failed to import extension fixutf8 from 
programa/Mercurial/hg-fixutf8/fixutf8.py: No module named
ctypes
Mercurial Distributed SCM

mercurialのCREWを入れるといいらしい。

Windows版Mercurial公式からcrewバージョンを入れたら直った。

mercurial-crew_XXXX.exe

公式、http://code.google.com/p/mercurial-nightly-builds/downloads/list

今後は最新版を導入すれば問題なく動くらしい。

no module named ctypesのエラーのついて詳しくはここ。

http://bitbucket.org/stefanrusek/hg-fixutf8/issue/5/ctype-module-not-found

文字コードを気にしなくていい

MercurialではWindows/Linuxでも問題なく「日本語ファイル名」を扱えるようになった。

追記

久々にやろうとしたら動かなかったのでメモ

http://tobysoft.net/wiki/index.php?Mercurial%2F%C6%FC%CB%DC%B8%EC%A5%D5%A5%A1%A5%A4%A5%EB%CC%BE%A1%A2%C6%FC%CB%DC%B8%EC%A5%B3%A5%DF%A5%C3%A5%C8%A5%ED%A5%B0%B4%D8%B7%B8#g6ae2465

2009/10/13時点での話ですが、fixutf-8ではマルチバイトがらみの解決は結局無理、ということらしいです。