読者です 読者をやめる 読者になる 読者になる

なか日記

一度きりの人生、楽しく生きよう。

Gitでの日本語表示対応(msysgit編)

Gitで日本語のコミットログを記入すると、以下の様な感じで叱られてしまいます。

$ git commit
Warning: commit message does not conform to UTF-8.
You may want to amend it after fixing the message, or set the config
variable i18n.commitencoding to the encoding your project uses.
[master cdc5059] 日本語設定する前のコミット
1 files changed, 2 insertions(+), 0 deletions(-)

一見、ちゃんとコミットログが登録されているように見えますが、git logしてみると文字化けが…
Git内部ではUTF-8で保存されているけど、WindowsのコマンドプロンプトSJISというのが原因のようです。

WindowsでのGit環境構築とその注意点 - SourceForge.JP Magazine : オープンソースの話題満載を参考に設定してみましたので、その辺りをまとめておきます。

lessのインストール*1

日本語対応のlessを以下のサイトからダウンロードします。
Downloading less
ダウンロードしたファイルを解凍し、その中にある「less.exe」をC:\Program Files\Git\bin配下にコピーします。
※既にインストールされているものは日本語に対応していないので、気にせず上書きします。

nkfのインストール

nkf Network Kanji Filter for Win32 (自家用)
ダウンロードしたファイルを解凍し、その中にある「nkf.exe」をC:\Program Files\Git\bin配下にコピーします。

日本語ページャの設定

profileの変更

C:\Program Files\Git\etc\profileを開き、最終行に以下の行を追加します。

export GIT_PAGER="nkf -s | less"

ログの表示

ここまでの設定で、以下の様に日本語で入力したログが表示されるようになりました。

commit cdc5059be03c38bf2a3c0a9412364feebd00370c
Author: nakaji
Date: Sun Nov 22 23:35:50 2009 +0900

日本語設定する前のコミット

でも、このログって、UTF-8からSJIS変換された訳では無いんでしょうね。表示上、SJIS変換されたからきちんと表示されてるだけで、保存されている履歴は依然、Gitの想定外なんでしょうね。
だって、TortoiseGITや、GitGUIで見ると相変わらずログは化けてるもん…
ということで、次は日本語の入力についてまとめよう。

追記

lessですが、msysgitに含まれているモジュールでも日本語表示できました。
日本語ページャの設定で、以下のようにprofileの変更を行ってください。

export GIT_PAGER="nkf -s | LESSCHARSET=utf-8 less"

*1:lessは標準版でもOKでした