シフトJISで記述されたファイルを含むリポジトリの扱い方

これまで Windows 環境下で作業していたので Mercurial のリポジトリの中に日本語のコメントを含むファイルが多くあります。 開発環境が Linux へ移行したのですが以前のリポジトリを Linux 環境で取得するといわゆる文字化けが発生します。

hgrc に設定を記述することでワーキングファイルの取得時に文字コードを自動的に変換してくれます。


方法

1. -U オプションを指定して、リポジトリをクローンします。

$ hg clone -U http://foo.local/hg/foo foo

すでにリポジトリを取得している場合、一旦作業ファイルを削除します。

$ hg update -r null

2. テキストエディタで作業ディレクトリ以下の .hg/hgrc を編集し、変換するフィルタを指定します。
以下の例は iconv を使用して拡張子が .cpp .c .h のファイルを変換するように指定します。

[encode]
**.cpp = pipe: iconv -f utf-8 -t cp932
**.c = pipe: iconv -f utf-8 -t cp932
**.h = pipe: iconv -f utf-8 -t cp932

[decode]
**.cpp = pipe: iconv -f cp932 -t utf-8
**.c = pipe: iconv -f cp932 -t utf-8
**.h = pipe: iconv -f cp932 -t utf-8


3. 作業ファイルを取得します。

$ hg update

以上です。おつかれさまでした。

追記:

シェルスクリプトではなく Python を使った場合の処理を http://cobitech.blogspot.jp/2012/05/python.html に記述しました。


コメント

このブログの人気の投稿

バイナリーファイルを C 言語の配列で出力

Python を使って文字コード変換